String[] columns = {"nume", "compozitie", "indicatii", "contraindicatii", "administrare", "pret", "compensabil"};
Object[][] data = null;
try {
File file = new File("medicamente.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
BufferedReader reader = new BufferedReader(new FileReader("medicamente.txt"));
int lines = 0;
while (reader.readLine() != null) {
lines++;
}
reader.close();
data = new Object[lines][];
String line;
int numLines = 0;
while ((line = bufferedReader.readLine()) != null) {
data[numLines] = line.split(",");
numLines++;
}
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
final DefaultTableModel model = new DefaultTableModel(data, columns) {
@Override
public Class getColumnClass(int column) {
Class returnValue;
if ((column >= 0) && (column < getColumnCount())) {
returnValue = getValueAt(0, column).getClass();
} else {
returnValue = Object.class;
}
return returnValue;
}
};
JTable table = new JTable(model) {
public boolean isCellEditable(int row, int column) {
switch (column) {
case 5:
return true;
default:
return false;
}
}
};
final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
table.setRowSorter(sorter);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(1000, 500));
mainPanel.add(scrollPane);
scrollPane.setBounds(0, 240, 995, 510);
正如您所看到的,我将其中一列编辑为可编辑,其他列则不可编辑。我在某处读到,唯一的解决方案是清除文本文件,然后在文本文件中加载修改后的JTable。这里最好的选择是什么?
答案 0 :(得分:0)
I read somewhere that the only solution is to clear the text file and than load the modified JTable in the text file.
鉴于您将数据存储在文本文件中,这是正确的。
您可能需要查看Table Cell Listener。它会告诉您何时数据库中的数据发生了变化。然后,您可以调用代码来重新创建文本文件。
如果您不想使用此类,那么您也可以使用TableModelListener来实现此目的。阅读这两种方法之间差异的链接。