Sha*_*wat 3 java swing jbutton
我正在制作一个小项目,其中我有一个JFrame5 JButtons.3 JButtons是主要关注的问题,默认情况下已启用.
我想要的是,除非其中任何一个JButtons被按下,否则2的其余部分应保持禁用状态.
我尝试过ActionListner,MouseListener但无济于事.
检查我尝试过的多个代码.
public void mousePressed (MouseEvent me){
if (me.getButton() == MouseEvent.NOBUTTON ){
proceedBtn.setEnabled(false);
proceedBtn.setToolTipText("Please Enter A Button Before Proceeding");
}
else {
proceedBtn.setEnabled(true);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我试过的另一段代码.
public void mousePressed (MouseEvent me){
if (me.getClickCount == 0 ){
proceedBtn.setEnabled(false);
proceedBtn.setToolTipText("Please click a button Before Proceeding");
}
else {
proceedBtn.setEnabled(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?我甚至试过mouseClicked相同代码的方法但没有发生任何事情.
您需要了解ActionListener类.正如@ harper89建议的那样,甚至还有关于如何编写动作侦听器的教程.我也建议你使用子类JButton,因为这似乎比查询ActionEvent源代码更合适.
这是一个例子 -
public final class JButtonDemo {
private static DisabledJButton disabledBtnOne;
private static DisabledJButton disabledBtnTwo;
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
final JPanel disabledBtnPanel = new JPanel();
disabledBtnOne = new DisabledJButton();
disabledBtnTwo = new DisabledJButton();
disabledBtnPanel.add(disabledBtnOne);
disabledBtnPanel.add(disabledBtnTwo);
panel.add(disabledBtnPanel);
final JPanel enablerBtnPanel = new JPanel();
enablerBtnPanel.add(new EnablerJButton("Button 1"));
enablerBtnPanel.add(new EnablerJButton("Button 2"));
enablerBtnPanel.add(new EnablerJButton("Button 3"));
panel.add(enablerBtnPanel);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static final class DisabledJButton extends JButton{
public DisabledJButton(){
super("Disabled");
setEnabled(false);
}
}
private static final class EnablerJButton extends JButton{
public EnablerJButton(final String s){
super(s);
addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if(!disabledBtnOne.isEnabled()){
disabledBtnOne.setEnabled(true);
disabledBtnOne.setText("Enabled");
}
if(!disabledBtnTwo.isEnabled()){
disabledBtnTwo.setEnabled(true);
disabledBtnTwo.setText("Enabled");
}
}
});
}
}
}
Run Code Online (Sandbox Code Playgroud)

如果您按下三个启用按钮中的任何一个,则根据您的请求,两个禁用按钮都将启用.