2016-07-30 19 views
0

geklickt Ich habe ein Problem, jeder kann mir helfen. Dies ist meine JTable und eine Spalte darin gerendert haben ein Kombinationsfeld in seiner Zelle. Hier ist mein Problem in meiner Tabelle: Es wird nicht angezeigt, wenn ich auf das Kombinationsfeld klicke. Wenn ich table.getValueAt(row,column) drucke, wird es die vorherigen Daten der Zelle nicht die Daten in dem Kombinationsfeld zurückgeben, und es zeigt das Kombinationsfeld nicht an, um den Benutzer auszuwählen.Combobox Pop-out nicht, wenn in JTable Zelle

Der Code des JTable:

public void setUpSportColumn(JTable table, TableColumn sportColumn) { 
    // Set up the editor for the sport cells. 
    JComboBox<String> comboBox = new JComboBox<String>(); 
    DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(); 
    model.addElement("Snowboarding"); 
    model.addElement("Rowing"); 
    model.addElement("Knitting"); 
    model.addElement("Speed reading"); 
    model.addElement("Pool"); 
    model.addElement("None of the above"); 
    comboBox.setModel(model); 
    sportColumn.setCellEditor(new DefaultCellEditor(comboBox)); 

    ComboBoxTableCellRenderer renderer = new ComboBoxTableCellRenderer(); 
    renderer.setModel(model); 
    sportColumn.setCellRenderer(renderer); 
} 

image

+0

zeigen uns Ihren Code –

+0

hier ist der Code, sein, wenn das Rendering getan, wenn ich anothe Frage stellen kann, ich Daten aus einer Datenbank zum jtable bin hinzuzufügen, ist es etwas damit zu tun ? –

Antwort

1

TableRenderDemo ist eine vollständige, Arbeitsbeispiel, wie unten modifiziert.

image

  1. Um zu sehen, dass der Editor die TableModel aktualisiert, aktivieren Sie das Debuggen in MyTableModel.

    $ java TableRenderDemo 
    Setting value at 0,2 to None of the above (an instance of class java.lang.String) 
    New value of data: 
        row 0: Mary Campione None of the above 5 false 
        row 1: Alison Huml Rowing 3 true 
        row 2: Kathy Walrath Knitting 2 false 
        row 3: Sharon Zakhour Speed reading 20 true 
        row 4: Philip Milne Pool 10 false 
    
  2. Verwenden Sie einen der Ansätze here den Tabelleneditor haben den Entwurf eines gewöhnlichen JComboBox lassen gezeigt;:

    private boolean DEBUG = true; 
    

    Das Ergebnis wird auf der Konsole angezeigt werden das akzeptierte answer unter Verwendung eines UIManager Icons ist oben dargestellt.

    sportColumn.setCellRenderer(new DefaultTableCellRenderer(){ 
    
        @Override 
        public Component getTableCellRendererComponent(JTable table, Object value, 
          boolean isSelected, boolean hasFocus, int row, int column) { 
         JLabel label = (JLabel) super.getTableCellRendererComponent(table, 
          value, isSelected, hasFocus, row, column); 
         label.setIcon(UIManager.getIcon("Table.descendingSortIcon")); 
         return label; 
        } 
    }); 
    
+0

es ist die gleiche Sache, seine Arbeit, wenn ich Demos und Tudurials sehe, aber seine gleiche Sache in meinem Code –

+2

Bitte redigieren Sie Ihre Frage, um ein [mcve] einzuschließen, das das Problem reproduziert, das Sie beschreiben. – trashgod