我有一個屏幕(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