如何检查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");
}
}
});
当我运行此代码时,代码仅提供"按下添加按钮"虽然我没有按下"添加"按钮。为什么会这样发生?
答案 0 :(得分:13)
JButton
有model来回答这些问题:
isArmed()
,isPressed()
,isRollOVer()
等。因此,您可以向模型询问您正在寻找的答案:
if(jButton1.getModel().isPressed())
System.out.println("the button is pressed");
答案 1 :(得分: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 :(得分:2)
JButton#isEnabled
更改了组件的用户交互性,即用户是否能够与之交互(按下它)。
按下JButton
时,会触发actionPerformed
事件。
当您按下确认按钮时,您正在接收Add button is pressed
因为启用了添加按钮。如上所述,它与按下按钮的开始无关。
根据您的代码,如果您尝试检查"已按下"在确认按钮的ActionListener
内开始添加按钮,它总是错误的,因为按钮只会处于按下状态,而添加按钮的ActionListener
正在调用。
根据所有这些信息,我建议您考虑使用JCheckBox
,然后使用JCheckBox#isSelected
确定是否已对其进行检查。
仔细查看How to Use Buttons了解更多详情
答案 3 :(得分:1)
在System.out.println(e.getActionCommand());
函数中执行actionPerformed(ActionEvent e)
。这将告诉您刚刚执行了哪个命令。
或
if(e.getActionCommand().equals("Add")){
System.out.println("Add button pressed");
}
答案 4 :(得分:0)
您尝试使用的方法检查按钮是否处于活动状态:
btnAdd.isEnabled()
启用后,与此对象关联的任何组件都处于活动状态,并且能够触发此对象的actionPerformed方法。
此方法不会检查按钮是否被按下。
如果我正确理解您的问题,您需要在用户点击“结帐”后停用“添加”按钮。
尝试在开始时停用按钮:btnAdd.setEnabled(false)
或在用户按下“结帐”后
答案 5 :(得分:0)
使用此命令
if(JButton.getModel().isArmed()){
//your code here.
//your code will be only executed if JButton is clicked.
}
答案很短。但这对我有用。使用按钮的变量名称代替“ JButton”。