以下代码用于设置 JTable 的行和列:
private void createUIComponents() {
ergebnisModel = (DefaultTableModel) setupColumnsAndRows();
ergebnisTabelle = new JTable(ergebnisModel);
ergebnisTabelle.setFont(new Font("Arial", Font.PLAIN, 15));
//ergebnisModel.setRowCount(0);
tabellenScroll = new JScrollPane(ergebnisTabelle);
vergleichPlotter = new Plotter(calculator, 450, 400, Plotter.GraphType.VERGLEICH);
stromPlotter = new Plotter(calculator, 180, 150, Plotter.GraphType.STROM);
spannungPlotter = new Plotter(calculator, 180, 150, Plotter.GraphType.SPANNUNG);
leistungPlotter = new Plotter(calculator, 180, 150, Plotter.GraphType.LEISTUNG);
}
private TableModel setupColumnsAndRows() {
DefaultTableModel ergebnisModel = new DefaultTableModel();
ergebnisModel.addColumn("Größen");
ergebnisModel.addColumn("R in Ohm");
ergebnisModel.addColumn("XL in Ohm");
ergebnisModel.addColumn("XC in Ohm");
ergebnisModel.addRow(new String[] {"Widerstand", String.valueOf(calculator.getWiderstand()),
String.valueOf(calculator.calculateXL()), String.valueOf(calculator.calculateXC())});
ergebnisModel.addRow(new String[]{"I1", String.valueOf(calculator.getSpannung() / calculator.getWiderstand()), null, null});
ergebnisModel.addRow(new String[]{"I2", null, String.valueOf(calculator.getSpannung() / calculator.calculateXL()), null});
ergebnisModel.addRow(new String[]{"I3", null, null, String.valueOf(calculator.getSpannung() / -calculator.calculateXC())});
ergebnisModel.addRow(new String[] {null, null, null, null});
ergebnisModel.addRow(new String[]{"P", String.valueOf(calculator.calculateP()), null, null});
ergebnisModel.addRow(new String[]{"Q", String.valueOf(calculator.calculateQ()), null, null});
ergebnisModel.addRow(new String[]{"S", String.valueOf(calculator.calculateS()), null, null});
ergebnisModel.addRow(new String[]{"R Ges", String.valueOf(calculator.calculateGesWiderstand()), null, null});
ergebnisModel.addRow(new String[]{"I Ges", String.valueOf(calculator.getGesamtstrom()), null, null});
return ergebnisModel;
}
} 其中 null 表示一个空格。计算器是-惊喜,惊喜-我的计算器类,它执行所有数学函数。它适用于之前通过 GUI 传入的数字。
该表是输出对话框的一部分。现在我遇到的问题是,在同一会话期间第二次打开对话框后,使用来自第一个屏幕的不同输入,数据没有刷新。它仍然显示使用旧输入完成的计算。
传递对象不会是问题,calculator
因为依赖于该对象的其他组件(Plotter
实例)总是由
问题出在哪里?
还有另一种更好的方式将数据放入表中吗?
编辑
我正在使用 IntelliJ 的 GUI Builder,它使用 XML 文件来标记 componentbeans 的状态。因此,一些组件(见上文)是手动创建的,而其他组件是我们给定的 XML 文件。