Java 如何检查JButton是否已按下?如果isEnable()不起作用?
如何检查JButton是否已按下?我知道有一个方法的名称是“isEnabled” 所以我试着写一段代码来测试Java 如何检查JButton是否已按下?如果isEnable()不起作用?,java,swing,awt,jbutton,Java,Swing,Awt,Jbutton,如何检查JButton是否已按下?我知道有一个方法的名称是“isEnabled” 所以我试着写一段代码来测试 这段代码有两个按钮,分别是“添加”按钮和“签出”按钮 当我按下“添加”按钮后按下“签出”按钮时,代码将显示“添加按钮已按下”消息,但如果在按下“签出”按钮之前未按下“添加”按钮,代码将显示“添加按钮未按下”消息 代码如下: final JButton btnAdd = new JButton("Add"); btnAdd.addActionListener(new ActionListe
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");
}
}
});
当我运行这段代码时,代码只给出了“Add button is pressed”,尽管我没有按“Add”按钮。为什么会这样
JButton
有一个解决以下问题的方法:
isArmed()
isPressed()
isRollOVer()
if(jButton1.getModel().isPressed())
System.out.println("the button is pressed");
似乎您需要使用:
JButton#isenable
更改组件的用户交互,即用户是否能够与其交互(按下它)
当按下JButton
时,会触发actionPerformed
事件
由于“添加”按钮已启用,当您按下“确认”按钮时,您将收到“添加”按钮被按下的消息。如上所述,这与按下按钮的开始无关
根据您的代码,如果您试图在确认按钮的ActionListener
中检查add按钮的“按下”开始,它将始终为false,因为只有在调用add按钮的ActionListener
时,按钮才会处于按下状态
基于所有这些信息,我建议您考虑使用<代码> jCuthBox ,然后可以使用<代码> jCuthboxβ>选择< <代码>以确定它是否已被检查。
请仔细查看更多详细信息只需执行
System.out.println(e.getActionCommand())代码>内部actionPerformed(ActionEvent e)
函数。这将告诉您刚刚执行了哪个命令
或
您尝试使用的方法将检查按钮是否处于活动状态:
btnAdd.isEnabled()
启用时,与此对象关联的任何组件都处于活动状态,并且能够触发此对象的actionPerformed方法
此方法不检查按钮是否按下
如果我正确理解您的问题,您希望在用户单击“签出”后禁用“添加”按钮
尝试在开始时禁用按钮:btnAdd.setEnabled(false)
或在用户按下“签出”后使用此命令
if(JButton.getModel().isArmed()){
//your code here.
//your code will be only executed if JButton is clicked.
}
答案很简短。但这对我很管用。初始化btnAdd.setEnabled(false)后,使用按钮的变量名,而不是“JButton”。;检查是否按下的确切目的是什么?侦听器只注册到一个按钮,因此只需执行所需的操作,而无需检查anything@peeskillet如何在不添加任何内容的情况下结账@伊莎兰,你什么意思?@peeskillet确切地说,如果它被移除了怎么办?:)很好的建议,但是除非OP检查它的ActionListener
中的add按钮的状态,否则它将始终被解除/取消按下。这就是JButton
的工作原理……是的!事实上,如果他使用ActionListner
,他甚至不需要检查isPressed类型检查。他只需声明一个布尔值,并在目标按钮的操作侦听器侦听操作事件时使其为真。我只是想让用户知道这些针对isEnabled()
:)的函数。这些天来,很多用户的问题没有多大意义,但其他人的声誉,甚至不关心:因此,让我贪婪。抱歉,但谁不想发财呢?@Sage仍然不起作用。代码给了我“false”值,尽管我在这里已经按下了该按钮:btnAdd.addActionListener(新ActionListener(){public void actionPerformed(ActionEvent arg0){System.out.println(“+btnAdd.getModel().isPressed());});按照程序员的建议去做。他已经解释了它不起作用的原因。我的目的是让您知道几个状态函数是如何存在的,以便与之一起工作的。:)+1:不过我刚才已经说过了。。对不起,我没注意到:)我同意他应该改变设计理念。事实上,当他用按下添加按钮的检查按钮
进行检查时:正如peeskiller所指出的,我不认为有任何理由依赖输入控制组件out@Sage不用担心,说同样话的人越多,我们就越有可能把我们的信息传达出去;)取决于动作命令!不,我不认为这是个好建议。请重新思考并阅读其他答案:)@Sage你们都很好。但我测试了这个,它是有效的,这是一个简单的方法。
if(e.getActionCommand().equals("Add")){
System.out.println("Add button pressed");
}
if(JButton.getModel().isArmed()){
//your code here.
//your code will be only executed if JButton is clicked.
}