我有一个jbutton,它在鼠标点击时执行一个功能。为了以编程方式执行此操作,我还有其他功能
void clickButton(){
backButton.doClick();
}
当我运行clickButton()函数时,我可以看到在jFrame上按下了backButton但是没有发生与backButton相关联的函数。当我用鼠标点击它它的功能。我在这做错了什么?
答案 0 :(得分:5)
如果您ActionListener
附加了button
,当您调用方法.doClick()
时,它就会被触发;
验证它的样本测试:
public class Test implements ActionListener {
public Test() {
}
public void actionPerformed(ActionEvent e) {
System.out.println("The action have been performed");
}
public static void main(String[] agrs) {
JButton but = new JButton();
but.addActionListener(new Test());
but.doClick();
}
}
答案 1 :(得分:1)
您可以迭代该按钮的侦听器并手动调用它们。
KeyEventDispatcher keyEventDispatcher = new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(final KeyEvent e) {
if (e.getID() == KeyEvent.KEY_TYPED) {
System.out.println(e);
if (e.getKeyChar() == ' '){
MouseEvent me = new MouseEvent(btnStop,MouseEvent.MOUSE_CLICKED,EventQueue.getMostRecentEventTime(),0,0,1,1,false);
for (MouseListener ml : btnStop.getMouseListeners()) ml.mouseClicked(me);
}
}
// Pass the KeyEvent to the next KeyEventDispatcher in the chain
return false;
}
};
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(keyEventDispatcher);
}
答案 2 :(得分:0)
如何将逻辑附加到按钮?如果您使用ActionListener(或Action),则应该触发。如果您正在使用其他东西(也许是MouseListener?),我认为不会。