0
我想在默認單元格編輯器組合框中最初選擇一個值。當我設置內部渲染器或編輯器時,即使用戶更改它,組合鍵也始終顯示相同的值,因爲我在渲染器中設置了該值。如何在渲染器中設置組合框值並允許用戶對組合框進行更改?下面是我的代碼:在默認單元格編輯器和渲染器中設置組合框值JTable
public TableCellRenderer getCellRenderer(int row, final int column) {
if (column == 1) {
TableCellRenderer renderer = new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable arg0, Object arg1,boolean arg2, boolean arg3, int row, int col) {
String text="";
Component comp;
if(lovArray[row]!=null && lovArray[row].split("\\|").length>1)
{
JComboBox combo = new JComboBox(lovArray[row].split("\\|"));
comp =combo;
//combo.setSelectedItem(values[row]);
}
else
{
comp = CustomTable.super.getCellRenderer(row, col).getTableCellRendererComponent(arg0, arg1, arg2, arg3, row, col);
}
return comp;
}
};
return renderer;
}
return super.getCellRenderer(row, column);
}
在上面的代碼我要去顯示組合僅當該特定行的值具有由分隔的多個值「|」。否則我們將返回默認的渲染器。
我也想設置組合值爲一個數組中的特定值。但是由於在渲染器內部設置,即使用戶更改了組合值,它始終顯示相同的值。如何解決這個問題?
作爲渲染器的組合沒有多大意義:它的用法本質是從下拉列表中選擇一個值,但下拉將永遠不會在渲染組件中可見。另外:不要在每次調用getCellRenderer時重新創建一個新的渲染器/渲染組件,而是重新使用同一個實例 – kleopatra
@kleopatra我沒有得到你的意思,但下拉將永遠不會在渲染組件中可見「 。根據我的代碼,我可以根據需要在所有單元格中獲取組合框下拉列表。事情是我需要改變預選值從組合顯示時。我能夠獲得下拉菜單並進行選擇。但在選擇之後,組合框只顯示一個我在渲染器中設置的固定值。我希望單元格看起來像一個下拉框bcoz用戶應該知道他們可以從中選擇一個值。有什麼建議麼?謝謝 –