Wie man Werte und ausgewählte Werte aus combobox-innen jtable?

Bevor Sie meine Frage, ich werde versuchen und explaing, was ich brauche und zu tun versuche. Ich habe eine Tabelle, wo gibt es mehrere Spalten anzeigen, die eine combobox, wie das Bild zeigt:

Bild http://www.freeimagehosting.net/newuploads/4ks9s.png

Diese erzeugen soll eine "Bestellung" für die jobs, die diese Bedeutung, Aufgabe 1 gehen Sie zunächst auf die Station 1. Wenn ich auf add Station 4 Station 2 Spalte es würde dann gehen Sie zu Station 4, und so weiter. Es ist beabsichtigt, erstellen eine Reihenfolge für die weitere Bearbeitung. Also, ich möchte:

  • Erstellen der Tabelle und zeigt den gerenderten combobox;
  • Die Zellen von den Spalten (3-6) nicht bearbeitet werden, wenn die Vorherige Spalte hat den Wert "none" (also sicherstellen, dass es hält die richtige Reihenfolge);
  • Nicht angezeigt, eine Station, die bereits gewählt wurde für diese Zeile;

Aber für den Anfang, ich bin nicht in der Lage, um die Werte, die gesetzt werden, wenn die Wahl von den comboboxes noch bin ich in der Lage zu bekommen thosevales!

Hier ist mein code bisher.

Erstellen der combobox:

public class SimGui extends JFrame {
                          //implements ActionListener {
    String Stations[] = new String[] {"Station 1","Station 2","Station 3","Station 4","Station 5","None"};
    JComboBox stationscombo = new JComboBox(Stations);
    Object obj = stationscombo.getSelectedItem();

Maus-Klick-event auf den Tisch:

private void jTable2MouseClicked(java.awt.event.MouseEvent evt) {                                     
    //Object event = evt.getSource();
    obj = stationscombo.getSelectedItem();
    System.out.println("Item: " + obj);
    //ListSelectionModel selectionModel = jTable2.getSelectionModel();
    int tb1columns = jTable2.getColumnCount();
    int selectionrow= jTable2.getSelectedRow();
    int selectioncolumn = jTable2.getSelectedColumn();
    if (selectioncolumn > 1) {
        for (int i=2;i<tb1columns;i++) {
            System.out.println(jTable2.getValueAt(selectionrow,selectioncolumn));
            /*if (jTable2.getValueAt(selectionrow, i) != "None") {
                stationscombo.removeItem(jTable2.getValueAt(selectionrow, i));
            }*/
        }
    }
    else { System.out.println(jTable2.getValueAt(selectionrow,selectioncolumn)); }
}

Den Tisch Konstruktion:

jTable2.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
        {null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null},
        {null, null, null, null, null, null, null}
    },
    new String [] {
        "Job Type", "Parts", "Station 1", "Station 2", "Station 3", "Station 4", "Station 5"
    }
) {
    Class[] types = new Class [] {
        java.lang.Integer.class, java.lang.Integer.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
    };
    boolean[] canEdit = new boolean [] {
        false, true, true, true, true, true, true
    };

    public Class getColumnClass(int columnIndex) {
        return types [columnIndex];
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return canEdit [columnIndex];
    }
});
jTable2.getTableHeader().setReorderingAllowed(false);
for (int x = 2;x<7;x++) {
    jTable2.getColumnModel().getColumn(x).setCellEditor(new DefaultCellEditor(stationscombo));
}
jTable2.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        jTable2MouseClicked(evt);
    }
});

Ich sah sich um und versuchte zu implementieren eines listener für die combobox aber nicht. Wenn ich den ActionListener implementieren, der auf die Klasse zeigt es eine Warnung zu sagen, dass:

SimGui is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener

Habe ich alreay einen ActionListener implementiert, auf die Tische, die funktioniert, aber ich weiß nicht, ob das stören könnte?

Action action = new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println(e.getSource());
        //TableCellListener tcl = (TableCellListener)e.getSource();
        //JComboBox cb = (JComboBox)e.getSource();
        //String newSelection = (String)cb.getSelectedItem();
        /*JComboBox cb = (JComboBox)e.getSource();
        String teste = (String)cb.getSelectedItem();
        System.out.println("Item: " + teste);*/
        //TableCellListener tcl1 = new TableCellListener(jTable1, action);
        /*if (tcl.getColumn() == 3) {
            if (tcl.getNewValue() == true) {
                int x = tcl.getColumn();
                table1model.setColumnEditable(x, true);
            }
            else { 
                table1model.setColumnEditable(tcl.getColumn(), false);
            }
            /*boolean canEdit[] = {
            false, true, true, true, true, true
            };
            //System.out.println(isCellEditable(tcl1.getRow(),tcl1.getColumn()));
        }*/
        /*System.out.println(newSelection);
        System.out.println("Row   : " + tcl.getRow());
        System.out.println("Column: " + tcl.getColumn());
        System.out.println("Old   : " + tcl.getOldValue());
        System.out.println("New   : " + tcl.getNewValue());*/
    }
};

Aber unterm Strich, meine Frage ist, wie kann ich richtig arbeiten mit der combobox in der Tabelle, so dass ich die Werte und der Wert des items, wenn ausgewählt?

  • Für bessere Hilfe früher, nach einem SSCCE.
Schreibe einen Kommentar