我有一个主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);
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:还有其他方法我只能打开一个子框架(这意味着当该子框架打开时,单击主框架中的按钮除了关闭该子框架外什么都不做)?
这似乎是一种很好的方式,但是,还有其他方法.您的类可以将子项的引用保留JFrame 为成员变量.该按钮可以检查该成员是否被null处置,如果是,则创建一个新成员; 但除此之外它可以把现有的孩子带到前面.
| 归档时间: |
|
| 查看次数: |
4282 次 |
| 最近记录: |