如何刷新JTable的值?
How to refresh the value of JTable?
if(e.getSource()== submit){
// Error Handling
if(viewSelection.getText().equals("Empty") || textField.getText().isBlank()) {
JOptionPane.showMessageDialog(null, "Wrong Value");
}else {
try {
dataFile.EditData(viewSelection.getText(), dataFile.ReadData(), Integer.parseInt(textField.getText()));
// table.setValueAt(dataFile.material.get(viewSelection.getText()), 0,0);
JOptionPane.showMessageDialog(null, "Saved Data!");
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
String header[] = {"material", "stack"};
String contents[][] = {
{milk.getText(), dataFile.material.get(milk.getText())},
{vanila.getText(), dataFile.material.get(vanila.getText())},
{coffeebean1.getText(), dataFile.material.get(coffeebean1.getText())},
{coffeebean2.getText(), dataFile.material.get(coffeebean2.getText())},
{coffeebean3.getText(), dataFile.material.get(coffeebean3.getText())},
{choco.getText(), dataFile.material.get(choco.getText())},
{caramel.getText(), dataFile.material.get(caramel.getText())},
{icecream.getText(), dataFile.material.get(icecream.getText())},
{sweatMilk.getText(), dataFile.material.get(sweatMilk.getText())}
};
DefaultTableModel model = new DefaultTableModel(contents, header);
table = new JTable(contents, header);
model.fireTableDataChanged();
JScrollPane scrollpane = new JScrollPane(table);
我正在编写一个程序来从 DataFile Class 导入值并通过 GUI 更改值。
我想在用户按下提交按钮时刷新 JTable
的值。
我试图更改 table 的列值,但我很担心,因为它不起作用....
在我看来,每次用户按下提交按钮时,您都必须再次执行所有这些代码:
String header[] = {"material", "stack"};
String contents[][] = {
{milk.getText(), dataFile.material.get(milk.getText())},
{vanila.getText(), dataFile.material.get(vanila.getText())},
{coffeebean1.getText(), dataFile.material.get(coffeebean1.getText())},
{coffeebean2.getText(), dataFile.material.get(coffeebean2.getText())},
{coffeebean3.getText(), dataFile.material.get(coffeebean3.getText())},
{choco.getText(), dataFile.material.get(choco.getText())},
{caramel.getText(), dataFile.material.get(caramel.getText())},
{icecream.getText(), dataFile.material.get(icecream.getText())},
{sweatMilk.getText(), dataFile.material.get(sweatMilk.getText())}
};
DefaultTableModel model = new DefaultTableModel(contents, header);
table = new JTable(contents, header);
和你的一样。这似乎是您用来在 table 中显示 DataFile 中的值的代码,因此您可以将这段代码放在一个函数中,并在程序开始时调用该函数,每次提交按钮是按下
if(e.getSource()== submit){
// Error Handling
if(viewSelection.getText().equals("Empty") || textField.getText().isBlank()) {
JOptionPane.showMessageDialog(null, "Wrong Value");
}else {
try {
dataFile.EditData(viewSelection.getText(), dataFile.ReadData(), Integer.parseInt(textField.getText()));
// table.setValueAt(dataFile.material.get(viewSelection.getText()), 0,0);
JOptionPane.showMessageDialog(null, "Saved Data!");
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
String header[] = {"material", "stack"};
String contents[][] = {
{milk.getText(), dataFile.material.get(milk.getText())},
{vanila.getText(), dataFile.material.get(vanila.getText())},
{coffeebean1.getText(), dataFile.material.get(coffeebean1.getText())},
{coffeebean2.getText(), dataFile.material.get(coffeebean2.getText())},
{coffeebean3.getText(), dataFile.material.get(coffeebean3.getText())},
{choco.getText(), dataFile.material.get(choco.getText())},
{caramel.getText(), dataFile.material.get(caramel.getText())},
{icecream.getText(), dataFile.material.get(icecream.getText())},
{sweatMilk.getText(), dataFile.material.get(sweatMilk.getText())}
};
DefaultTableModel model = new DefaultTableModel(contents, header);
table = new JTable(contents, header);
model.fireTableDataChanged();
JScrollPane scrollpane = new JScrollPane(table);
我正在编写一个程序来从 DataFile Class 导入值并通过 GUI 更改值。
我想在用户按下提交按钮时刷新 JTable
的值。
我试图更改 table 的列值,但我很担心,因为它不起作用....
在我看来,每次用户按下提交按钮时,您都必须再次执行所有这些代码:
String header[] = {"material", "stack"};
String contents[][] = {
{milk.getText(), dataFile.material.get(milk.getText())},
{vanila.getText(), dataFile.material.get(vanila.getText())},
{coffeebean1.getText(), dataFile.material.get(coffeebean1.getText())},
{coffeebean2.getText(), dataFile.material.get(coffeebean2.getText())},
{coffeebean3.getText(), dataFile.material.get(coffeebean3.getText())},
{choco.getText(), dataFile.material.get(choco.getText())},
{caramel.getText(), dataFile.material.get(caramel.getText())},
{icecream.getText(), dataFile.material.get(icecream.getText())},
{sweatMilk.getText(), dataFile.material.get(sweatMilk.getText())}
};
DefaultTableModel model = new DefaultTableModel(contents, header);
table = new JTable(contents, header);
和你的一样。这似乎是您用来在 table 中显示 DataFile 中的值的代码,因此您可以将这段代码放在一个函数中,并在程序开始时调用该函数,每次提交按钮是按下