我的JTable
只有一列,此列中包含JComboBox
个项目。
我找到了一种方法来保存从JTable
到txt文件的所有值。
我还找到了一种从txt文件加载值的方法,这里是代码:
private JTable table = createMyTable ();
private void loadTable(File file) {
String line;
BufferedReader reader;
String ColumnName = "ComboBox values";
reader = new BufferedReader(new FileReader(file));
int i = 0;
while((line = reader.readLine()) != null)
{
JComboBox comboBox = createComboBox();
tabel.getColumnModel().getColumn(2).setCellEditor(
new DefaultCellEditor(comboBox));
String string_Col = line.trim();
if ( !index.isEmpty() )
comboBox.setSelectedIndex(index);
i++;
}
reader.close();
}
private JComboBox createComboBox () {
int array [] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
JComboBox comboBox = new JComboBox();
for (int value : array)
comboBox.addItem(value);
return comboBox;
}
文本文件是一个简单的文件,每行包含数字,如下所示:
34
23
2
43
12
我想恢复这些值,并将它们放在JComboBox
的{{1}}行中。
问题是我的解决方案不太适合恢复这些值,因为JTable
值只是写入JComboBox
单元格,因此当我单击一行时,相对{{1}组件立即聚焦并选择列表的第一项,并且我之前恢复的值将丢失。我不明白这种行为。
因此有一种很好的方法可以从文件中获取这些文件并以正确的方式将它们放在JTable
的{{1}}个组件中,以保证正常的JComboBox
行为也就是说,当我点击JComboBox
组件时,焦点必须保留在之前选择的索引上?
由于
修改
我编辑了我的代码,JTable
是我用来从txt文件中获取JComboBox
值的函数,我使用JComboBox
来完成我需要的操作,但它不起作用,它似乎不起作用,因为使用loadTable()
将JComboBox
置于combo.setSelectedIndex(index);
内,因此可能存在问题。
确实,我尝试在JComboBox
函数的末尾添加一些调试代码,我只是尝试从JTable
添加tabel.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(comboBox));
,猜猜是什么?它有效,loadTable()
现在将所选项目显示在右侧索引中。相反,它不在JComboBox
内。
我该如何解决这个问题?