如何检查JButton是否被按下?我知道有一个方法,它的名字是 "isEnabled"。
所以我试着写一段代码来测试。
这里是代码,当我运行这段代码时,代码会显示 "添加 "按钮没有被按下。
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");
}
}
});
当我运行这段代码时,虽然我没有按 "添加 "按钮,但代码只给出 "添加按钮已被按下"。为什么会出现这种情况?
JButton
有一个 模型 其中回答了这些问题。
isArmed()
, isPressed()
, isRollOVer()
等。因此,你可以向模型询问你所寻求的答案。
if(jButton1.getModel().isPressed())
System.out.println("the button is pressed");
看来你需要用 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");
}
});
JButton#isEnabled
改变一个组件的用户交互性,即用户是否能够与之交互(按下)。
当一个 JButton
按下后,它会发射一个 actionPerformed
事件。
您正在接收 Add button is pressed
当你按下确认按钮时,因为添加按钮已经启用。 如上所述,它与按钮的按压启动无关。
根据您的代码,如果您尝试在确认按钮的 "按压 "开始时检查添加按钮的 "按压 "开始。ActionListener
将永远是假的,因为只有在添加按钮的时候,按钮才会处于按下状态。ActionListener
的被调用。
基于所有这些信息,我建议你可以考虑使用 JCheckBox
然后你可以使用 JCheckBox#isSelected
以确定它是否被检查过。
仔细查看 如何使用按钮 更多详情
只是做 System.out.println(e.getActionCommand());
里面 actionPerformed(ActionEvent e)
函数。这将告诉你刚才执行的是哪个命令。
或
if(e.getActionCommand().equals("Add")){
System.out.println("Add button pressed");
}
您正在尝试使用的方法检查按钮是否处于活动状态。
btnAdd.isEnabled()
当启用时,任何与此对象相关联的组件都是活动的,并且能够启动此对象的actionPerformed方法。
这个方法不检查按钮是否被按下。
如果我正确理解你的问题,你想在用户点击 "结账 "后禁用 "添加 "按钮。
试着在开始的时候禁用你的按钮,或者在用户点击 "退房 "后禁用。btnAdd.setEnabled(false)
或者在用户点击 "退房 "之后。
使用此命令
if(JButton.getModel().isArmed()){
//your code here.
//your code will be only executed if JButton is clicked.
}
答案很简短。但对我来说是有效的。用你的按钮的变量名代替 "JButton"。