2016-07-30 97 views
0

我遇到任何问题,任何人都可以帮助我。这是我的JTable,其中一列呈现在它的单元格中有一个组合框。这是我的表中的问题:当我单击组合框时,它不会弹出。当我打印时,它将返回单元格的prev数据而不是组合框中的数据,并且它不显示组合框让用户选择。单击JTable单元时组合框不会弹出

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

告诉我们你的代码 –

+0

这里的代码,其当渲染完成的,如果我可以问anothe问题,我将数据从数据库JTable中有没有什么事做与? –

回答

1

TableRenderDemo是如下修饰的完整,工作示例。

image

  1. 要查看编辑器更新TableModel,在MyTableModel启用调试。

    private boolean DEBUG = true; 
    

    结果将在控制台上显示:显示here让表编辑器的方法的

    $ 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. 使用一个具有普通JComboBox的设计;上面说明了使用UIManager图标接受的answer

    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

它是同样的事情,它的工作时,当我看到演示和touturials但在我的代码相同的东西 –

+2

请编辑您的问题,包括一个[mcve],再现您描述的问题。 – trashgod