如何检查JButton是否被按下?如果isEnable()不工作,如何检查JButton是否被按下?

问题描述 投票:5回答:6

如何检查JButton是否被按下?我知道有一个方法,它的名字是 "isEnabled"。

所以我试着写一段代码来测试。

  1. 这段代码有2个Jbuttons,分别是 "Add "按钮和 "Checkout "按钮。
  2. 当我按下 "添加 "按钮后,当我按下 "结账 "按钮时,代码会显示 "添加按钮已被按下 "的信息,但如果在按下 "结账 "按钮前没有按下 "添加 "按钮,代码会显示 "添加按钮未被按下 "的信息。

这里是代码,当我运行这段代码时,代码会显示 "添加 "按钮没有被按下。

final JButton btnAdd = new JButton("Add");
btnAdd.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    }
});
panel.add(btnAdd);
JButton btnConfirm = new JButton("Check Out");
btnConfirm.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if (btnAdd.isEnabled()) {
            System.out.println("Add Button is pressed");
        }
        if (!btnAdd.isEnabled()) {
            System.out.println("Add Button is not pressed");
        }
    }
});

当我运行这段代码时,虽然我没有按 "添加 "按钮,但代码只给出 "添加按钮已被按下"。为什么会出现这种情况?

java swing awt jbutton
6个回答
16
投票

JButton 有一个 模型 其中回答了这些问题。

  • isArmed(),
  • isPressed(),
  • isRollOVer()

等。因此,你可以向模型询问你所寻求的答案。

     if(jButton1.getModel().isPressed())
        System.out.println("the button is pressed");

3
投票

看来你需要用 JToggleButton :

JToggleButton tb = new JToggleButton("push me");
tb.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        JToggleButton btn =  (JToggleButton) e.getSource();
        btn.setText(btn.isSelected() ? "pushed" : "push me");
    }
});

2
投票

JButton#isEnabled 改变一个组件的用户交互性,即用户是否能够与之交互(按下)。

当一个 JButton 按下后,它会发射一个 actionPerformed 事件。

您正在接收 Add button is pressed 当你按下确认按钮时,因为添加按钮已经启用。 如上所述,它与按钮的按压启动无关。

根据您的代码,如果您尝试在确认按钮的 "按压 "开始时检查添加按钮的 "按压 "开始。ActionListener 将永远是假的,因为只有在添加按钮的时候,按钮才会处于按下状态。ActionListener的被调用。

基于所有这些信息,我建议你可以考虑使用 JCheckBox 然后你可以使用 JCheckBox#isSelected 以确定它是否被检查过。

仔细查看 如何使用按钮 更多详情


1
投票

只是做 System.out.println(e.getActionCommand()); 里面 actionPerformed(ActionEvent e) 函数。这将告诉你刚才执行的是哪个命令。

if(e.getActionCommand().equals("Add")){

   System.out.println("Add button pressed");
}

0
投票

您正在尝试使用的方法检查按钮是否处于活动状态。

btnAdd.isEnabled()

当启用时,任何与此对象相关联的组件都是活动的,并且能够启动此对象的actionPerformed方法。

这个方法不检查按钮是否被按下。

如果我正确理解你的问题,你想在用户点击 "结账 "后禁用 "添加 "按钮。

试着在开始的时候禁用你的按钮,或者在用户点击 "退房 "后禁用。btnAdd.setEnabled(false) 或者在用户点击 "退房 "之后。


0
投票

使用此命令

if(JButton.getModel().isArmed()){
    //your code here.
    //your code will be only executed if JButton is clicked.
}

答案很简短。但对我来说是有效的。用你的按钮的变量名代替 "JButton"。

© www.soinside.com 2019 - 2024. All rights reserved.