У меня есть главный JFrame.Внутри рамки есть кнопка.Когда я нажимаю кнопку, она открывает дочерний фрейм.
Но я хочу, чтобы только 1 дочерний фрейм был открыт в любой момент (вместо этого, когда я снова нажимаю кнопку, он дает мне второй дочерний фрейм, искоро...).
Итак, я добавил actionListener к кнопке, чтобы отключить его при открытии дочернего фрейма, и добавил windowListener к дочернему фрейму, чтобы при нажатии кнопки закрытия в правом верхнем углу онсделать кнопку (на главном кадре) способной.
Вот мой код:
import java.awt.Button;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Form1 extends JFrame implements ActionListener{
JButton btn1=new JButton("help");
public Form1() {
super("Form 1");
this.add(btn1);
setSize(200, 200);
btn1.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn1){
btn1.setEnabled(false);
final Form2 x= new Form2();
x.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
x.dispose();
btn1.setEnabled(true);
}
});
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
@Override
public void run() {
new Form1();
}
});
}
}
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Form2 extends JFrame {
JLabel lbl1=new JLabel("đang mở form 2 - trợ giúp");
public Form2() {
super();
add(lbl1);
setVisible(true);
setSize(200, 200);
}
}
Итак, мой вопрос: есть ли другой способ, которым я мог бы позволить открыть только один дочерний кадр(это означает, что когда этот дочерний кадр открывается, нажатие кнопки в основном кадре ничего не делает, если только этот дочерний кадр не закрыт)?