У меня есть экран (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) {
}
}