【发布时间】:2019-05-19 02:58:27
【问题描述】:
我正在做一个项目,我有两个JFrame 窗口。第一帧显示一个空表。它下方的按钮将打开应输入数据的第二帧。我的问题是,当我在第二帧中单击“确定”时,第一帧的表格不会显示插入的数据。
我尝试了jframe.revalidate(); 和jframe.repaint() 以及table.revalidate(); 和table.repaint();,但它不起作用。
另外,我正在使用DefaultTableModel,所以我也尝试了model.fireTableDataChanged();,但仍然没有。
//first jframe
public NewJFrame() {
initComponents();
setLocationRelativeTo(null);
viewTable();
}
Object[] newRow;
public NewJFrame(Object[] newRow){
initComponents();
setLocationRelativeTo(null);
this.newRow = newRow;
addNewRow();
}
public void viewTable(){
table.setFont(new Font("Segoe UI", Font.PLAIN, 16));
JTableHeader tablehead1 = table.getTableHeader();
tablehead1.setFont(new Font("Segoe UI", Font.PLAIN, 16));
table.setRowHeight(30);
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(0).setPreferredWidth(400); //Name
columnModel.getColumn(1).setPreferredWidth(100); //Age
}
public void addNewRow(){
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addRow(newRow);
System.out.println(newRow[0].toString() + newRow[1].toString()); //so i would know data is present
}
private void addActionPerformed(java.awt.event.ActionEvent evt) {
form f = new form();
f.setVisible(true);
}
//here's the second jframe
public form() {
initComponents();
setLocationRelativeTo(null);
}
private void OKActionPerformed(java.awt.event.ActionEvent evt) {
Object[] input = { name.getText(), age.getText() };
if(input.equals("")){
System.out.println("empty");
} else {
NewJFrame n = new NewJFrame(input);
n.revalidate();
n.repaint();
this.setVisible(false);
}
【问题讨论】:
-
“我有两个 jframes” 1) 请参阅 The Use of Multiple JFrames, Good/Bad Practice? 2) 为了尽快获得更好的帮助,edit 添加 minimal reproducible example 或 Short, Self Contained, Correct Example。 3)
NewJFrame请为类、方法和变量使用有意义的名称。 -
“我试过 .. 但它不起作用。另外,.. 但仍然没有。” 唯一 应该是必要的将数据添加到表模型中。如果这不起作用,则代码做错了非常。