Java 启用一个JButton并禁用另一个JButton
在我的ui中有两个按钮,它们重新指向两个Java 启用一个JButton并禁用另一个JButton,java,swing,jbutton,Java,Swing,Jbutton,在我的ui中有两个按钮,它们重新指向两个JFrames。我试图使如果用户按下按钮1,按钮2变为禁用,如果用户按下按钮2,按钮1变为禁用,因此用户不能同时打开JFrames import java.awt.*; import java.awt.event.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.*; public class Main exten
JFrame
s。我试图使如果用户按下按钮1,按钮2变为禁用,如果用户按下按钮2,按钮1变为禁用,因此用户不能同时打开JFrame
s
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);
}
}
在按钮一的
ActionListener
中,添加
ButtonTwo.setEnabled(false);
在按钮二的ActionListener
中添加
ButtonOne.setEnabled(false);
别忘了添加相应的启用(按钮。setEnable(true)
),否则将留下两个禁用的按钮。可能在关闭JFrames
的事件中
编辑:
您可以编写这样的方法
public void enableButtons()
{
button1.setEnabled(true);
button2.setEnabled(true);
}
在JFrame关闭事件中调用此方法。
这解释了JFrame关闭事件。请查看按钮组以获得更优雅的解决方案
您真的不应该使用多个帧(签出)。相反,使用一个框架并使用
CardLayout
在面板之间切换。不仅用户更容易使用,而且您不必担心他们同时按下两个按钮。要使按钮不可单击,请调用button.setEnable(false)
,因为您试图实现一个选择UI,并且只选择两个选项中的一个,所以您可能希望使用或。我尝试过,如果按下按钮1,按钮2将保持禁用状态,除非我们关闭应用程序,反之亦然。这就是为什么它将保持禁用状态直到结束。从逻辑上考虑,您希望何时再次启用按钮?如果我正确理解您的程序,您可能希望在用户关闭JFrame后启用按钮。我已经按照您所说的@nbz进行了尝试,但它不起作用。是的,这会很有帮助。您的windowClose事件似乎连接到主对象。您希望事件与两个JFrame关闭事件挂钩。