我有一个屏幕(JFrame
),它从文件中获取它的一些初始人口。但是,如果文件由于某种原因缺失或填充不正确,则许多字段被阻止为不可编辑,并且用户被迫点击设置按钮,这会产生另一个JFrame
屏幕。如果用户然后正确地更新文件,我希望原始屏幕重新填充新的文件数据,可以这样做吗?java JFrame更新修正了另一个JFrame
所以我有一个设置按钮的动作侦听器,它调用Java类“设置”。 “设置”有一个按钮“完成”,这将激活数据库/文件更新成功更新/扫除了原有的框架
btnSettings.setText("Settings");
btnSettings.setFont(font4);
btnSettings.setBounds(new Rectangle(15, 515, 140, 40));
btnSettings.setToolTipText("Default Settings");
btnSettings.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
settingsPerformed();
}
}) ;
private void settingsPerformed() {
JFrame settings = new Settings();
settings.setVisible(true);
}
,然后一个新的类设置
公共类设置来延长JFrame的 实现ActionListener的{
private.....
public Settings() {
this.getContentPane().setLayout(null);
this.setSize(new Dimension(450, 340));
this.setTitle("Default Settings");
this.setBackground(new Color(255, 247, 214));
this.setResizable(true);
this.setFont(font1);
pnlSettingsData.setBounds(new Rectangle(10, 10, 405, 285));
pnlSettingsData.setBorder(BorderFactory.createLineBorder(Color.blue, 1));
pnlSettingsData.setName("Settings");
pnlSettingsData.setLayout(null);
btnDone.setText("Done");
btnDone.setFont(font3);
btnDone.setBounds(new Rectangle(100, 250, 73, 20));
btnDone.setToolTipText("Click when ready for updating");
btnDone.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
doneActionPerformed(evt);
setVisible(false) ;
}
});
this.getContentPane().add(pnlSettingsData, null);
setDefaultCloseOperation(HIDE_ON_CLOSE);
setLocation(150,200);
//pack();
setVisible(true);
}
private void doneActionPerformed(ActionEvent evt) {
// include here the data base updates
}
public void actionPerformed(ActionEvent e) {
}
}
退房还[使用多个JFrames,好/坏实践?](http://stackoverflow.com/a/9554657/928711)。考虑使用模态JDialog(而不是合适的所有者)。 – 2013-03-08 22:48:27
@GuillaumePolet +1这就是我正在建议的:) – 2013-03-08 22:49:25
在你的例子中,第二帧不会阻止第一帧,这是JDialog的作用,请参阅[如何使用对话框](http:// docs。 oracle.com/javase/tutorial/uiswing/components/dialog.html)获取更多详细信息 – MadProgrammer 2013-03-08 22:50:03