我的ui中有两个按钮,它们会重定向到两个JFrame
。我试图做到这一点,如果用户按下按钮1,按钮2被禁用,如果用户按下按钮2,按钮1将被禁用,因此用户无法同时打开JFrame
。 / p>
import java.awt.*;
import java.awt.event.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class Main extends JFrame {
public Main() {
JPanel panel = new JPanel();
getContentPane().add (panel,BorderLayout.NORTH);
JButton button1 = new JButton("One");
panel.add(button1);
JButton button2 = new JButton("Two");
panel.add(button2);
button1.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
button2.setEnabled(false);
One f = new One();
f.setSize(350,100);
f.setVisible(true);
}
});
button2.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
button1.setEnabled(false);
Two fr = new Two();
fr.setSize(350,100);
fr.setVisible(true);
}
});
public void enableButtons()
{
button1.setEnabled(true);
button2.setEnabled(true);
}
}
public static void main(String[] args) {
Main frame = new Main();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
enableButtons();
System.exit(0);
}
});
frame.setSize(300,200);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
}
答案 0 :(得分:1)
在按钮一的ActionListener
中,添加
ButtonTwo.setEnabled(false);
并在按钮2的ActionListener
添加
ButtonOne.setEnabled(false);
不要忘记添加相应的启用(button.setEnable(true)
),否则您将有两个禁用按钮。也许是因为关闭了JFrames
。
编辑:
你可以写一个像这样的方法
public void enableButtons()
{
button1.setEnabled(true);
button2.setEnabled(true);
}
在JFrame关闭的情况下调用此方法。 这个tutorial解释了JFrame结束事件。
答案 1 :(得分:0)
查看ButtonGroup以获得更优雅的解决方案。
http://docs.oracle.com/javase/tutorial/uiswing/components/buttongroup.html