2013-03-30 58 views
4

我有一個JComboBox,JTable中的第3和第4列,但我不知道如何得到它的項目...問題是沒有方法來獲取項目,但劇組的JComboBox在JTable中

JComboBox combo=(JComboBox) jTable1.getColumnModel().getColumn(3).getCellEditor(); 

你能幫助我嗎?

+0

爲了更好地幫助越早,張貼[SSCCE](http://sscce.org/ ) –

回答

5

JComboBox包裹在CellEditor。使用DefaultCellEditor時,您必須檢索包裹組件,例如:

DefaultCellEditor editor = (DefaultCellEditor)table.getColumnModel().getColumn(3).getCellEditor(); 
JComboBox combo = (JComboBox)editor.getComponent(); 
+0

它的作品,但它刪除所有行的所有組合框的項目...我試過: DefaultCellEditor編輯器(DefaultCellEditor)jTable1.getCellEditor(0,3); JComboBox組合=(JComboBox)editor.getComponent(); combo.removeItemAt(combo.getSelectedIndex()); –

+0

不知道我明白:你是否試圖刪除給定行中組合框的項目? –

+0

是的,我想刪除特定行中的組合框的特定項目(我通過雙擊鼠標來完成,因此我想刪除選定的元素) –

0

嘗試這樣:

public void example(){ 

     TableColumn tmpColum =table.getColumnModel().getColumn(1); 
     String[] DATA = { "Data 1", "Data 2", "Data 3", "Data 4" }; 
     JComboBox comboBox = new JComboBox(DATA); 

     DefaultCellEditor defaultCellEditor=new DefaultCellEditor(comboBox); 
     tmpColum.setCellEditor(defaultCellEditor); 
     tmpColum.setCellRenderer(new CheckBoxCellRenderer(comboBox)); 
     table.repaint(); 
    } 


/** 
    Custom class for adding elements in the JComboBox. 
*/ 
class CheckBoxCellRenderer implements TableCellRenderer { 
     JComboBox combo; 
     public CheckBoxCellRenderer(JComboBox comboBox) { 
      this.combo = new JComboBox(); 
      for (int i=0; i<comboBox.getItemCount(); i++){ 
       combo.addItem(comboBox.getItemAt(i)); 
      } 
     } 
     public Component getTableCellRendererComponent(JTable jtable, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 
      combo.setSelectedItem(value); 
      return combo; 
     } 
    }