gpt4 book ai didi

java - 许多 jbutton 具有相同的 onkeypress 功能

转载 作者:行者123 更新时间:2023-12-02 05:56:32 25 4
gpt4 key购买 nike

我有很多可以单击的 jbutton(大约 50 多个)。

单击其中一个后,程序将检查按键输入并将按钮文本设置为按下的键。

我不想将 50 个代码块复制粘贴到一个按钮的每个 onkeypressed 和 onclick 事件,而是想在每个事件中使用一个函数。

到目前为止我的代码(减少):

private JButton attackMoveBtn = new JButton();
private boolean isAlreadyClicked = false;
private void attackMoveBtnKeyPressed(java.awt.event.KeyEvent evt) {
if(attackMoveBtn.getText().equals(Strings.setHotkey)){
isAlreadyClicked = false;
attackMoveBtn.setText(String.valueOf(evt.getKeyChar()));
}
}

private void attackMoveBtnMouseClicked(java.awt.event.MouseEvent evt) {
if(evt.getButton() == 3){
isAlreadyClicked = false;
attackMoveBtn.setText("");
}else{
if(!isAlreadyClicked){
isAlreadyClicked = true;
attackMoveBtn.setText(Strings.setHotkey);
}else{
isAlreadyClicked = false;
attackMoveBtn.setText("Mouse "+evt.getButton());
}
}
}

下一个按钮唯一会改变的是 JButton 本身(例如 attackMoveBtn 将变为 moveBtn)

我尝试使用String compName = evt.getComponent().getName();检索我按下的按钮的名称,但我无法使用 "attackMoveBtn".setText()因为 java 并不真正支持动态变量名称。

有没有办法知道按下了哪个按钮?然后我可以调用一个函数,并将 ButtonObject 作为参数,例如 myOnKeyPressFunction(JButton myButton)

我的问题是如何执行动态变量名称,或者我的方法是否错误,我应该使用不同的模式。

最佳答案

"Is there a way to get which button was pressed? I could then call a function with the buttonObject as a parameter like myOnKeyPressFunction(JButton myButton)"

只需使用返回 Object 的事件的 getSource 并将 JButton 转换为它

JButton button = (JButton)evt.getSource();
myOnKeyPressFunction(button);
<小时/>

仅供引用,按钮需要与 ActionListener 一起使用。如果您使用 GUI 编辑器工具,当从设计 View 中右键单击按钮时,选择 event->action->actionPerformed ,将添加一个 ActionListener你。

<小时/>

"i am using netbeans graphic editor to build my gui (i suck at gui programming tbh)"

我强烈建议您放弃构建器工具并先阅读一些教程并学习编写代码。浏览Creating GUIs with Swing

关于java - 许多 jbutton 具有相同的 onkeypress 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23046264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com