2017-05-08 105 views
1

我在JTable單元內部有一個JComboBox渲染器(和單元格編輯器)。在JTable內設置JComboBox選定索引

我的JComboBox具有兩個項目( 「a」 和 「B」)

我想JComboBox時選擇的索引設置爲1(對應於 「B」)。

我曾嘗試讓渲染器組件,並呼籲「的setSelectedIndex(1」)

回答

0

當你一起工作的渲染,它可以用正確的JComboBox模式工作:

String[] vls = new String[]{"a","b"}; 
JComboBox<String> comboBox1; 
... 


comboBox1.setModel(new DefaultComboBoxModel(vls)); 

您可以使用,當你與組合框模型的工作:

comboBox1.getModel().setSelectedItem("b"); 

,或者當你沒有組合框模型的工作

comboBox1.setSelectedIndex(1); 
+0

使用該組合框通過表中的所有行。您不能只設置選定的索引渲染器或編輯器將只顯示組合框中TableModel的值。 – camickr

+0

嗨:你的答案是一個普通的JComboBox(本身)。但是,我的JComboBox是JTable中的渲染器。 – user6013878

+0

謝謝,也許,我是不留神,我很抱歉 –

0

我想將JComboBox選定索引設置爲1(對應於「b」)。

您不設置索引。

編輯器由表中的所有行共享。當單元格開始編輯時,將選擇組合框項目。這是自動完成的。

因此,您只需將適當的數據添加到TableModel。

因此,在您創建TableModel時,需要將「b」值添加到該行的TableModel中。

編輯:

我的JComboBox是一個JTable中的渲染器。

定製渲染器看起來是這樣的:

class ComboBoxRenderer extends JComboBox implements TableCellRenderer 
{ 
    public ComboBoxRenderer() 
    { 
     setBorder(null); 
    } 

    public Component getTableCellRendererComponent(
     JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    { 
     removeAllItems(); 
     addItem(value); 

     return this; 
    } 
} 
+0

我明確地希望設置索引。例如,我可用的選擇是「a」和「b」。當用戶點擊(例如)某些JButton時,我希望可見的選定選項爲「b」 – user6013878

+0

@ user6013878,「我明確希望設置索引。」 - 無論您想要什麼都沒關係。這不是它的工作原理!你已經得到答案。如果要顯示「b」,則需要在給定單元格的TableModel中設置「b」。例如:http://stackoverflow.com/questions/43695819/setting-a-jcombobox-editor-using-tablemodellistener/43699886#43699886 – camickr

+0

我的兩段數據(「a」和「b」)已經在數據中模型。默認情況下,顯示第一個數據字符串(「a」)。我希望顯示不同的索引(1,對應於「b」)。我相信你錯了,而且可以做到。也許你誤解了我的問題。 – user6013878