我有一个主要的JFrame。框架内有一个按钮。当我点击按钮时,它会打开子框架。只允许在屏幕上1(儿童)JFrame
但我只希望只有一个孩子的框架是在任何时候开放,(而不是每当我再次点击按钮,它给了我第二个孩子框架,等等......)。
因此,我添加了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);
}
}
所以,我的问题是:有没有办法,我可以让只有一个孩子帧打开(这意味着当子框架被打开,点击按钮其它方式主框架什么都不做,除非该子框架关闭)?
顺便说一句 - *“đangmởform 2 - trợgiúp”*那是什么语言?这在英语中意味着什么? – 2012-03-18 03:58:34
这是越南语,字面意思是“Form2正在打开 - 帮助”:) – 2012-03-18 04:26:13
谢谢澄清。谷歌翻译的最佳猜测是菲律宾人,波兰人或意第绪语。毫不奇怪,他们没有一个能够很好地工作。只需将代码示例限制为SO即可。这样,人们可以从标题(或变量名称,文本内容等)中获取线索,以提出最佳建议。 – 2012-03-18 04:37:44