当前位置: 首页 > 知识库问答 >
问题:

将按钮名称作为字符串传递

田昊天
2023-03-14

从java中字符串的值创建对现有对象的引用

在我的项目中,有很多按钮(目前大约70个);每个按钮都会在数据库的jlabel中提出一个问题。现在,根据用户的选择,每个按钮(swings的jButton)将被分配颜色,这取决于用户是否想查看问题,或者他是否标记了问题的答案。

一种方法是为每个jbutton的actionperformed编码,并在每个jbutton中使用if-else来获得确切的颜色,然后使用setBackground属性将其更改为特定的颜色。但是,如果代码必须稍微更改,这会导致很大的问题。然后我必须复制这70个按钮中每个按钮的变化,这些变化可能会在未来增加。

我想的是一种创建函数并传递包含按钮名称的字符串参数的方法。所以它将是:void selectfromdatabase(String buttonname){/(.)。挫折背景(颜色:黄色);

我参考了一些SO论坛,发现了一个叫做反射的东西。但据我目前所知,它只适用于方法,而不适用于对象。还是我错过了什么???

共有1个答案

萧树
2023-03-14

对于ActionEvent tpye对象,有一种称为actionCommand的东西。将每个按钮绑定到ActionListener时,为每个按钮设置一个字符串参数(actionCommand)。然后可以在onActionPerformed中访问该参数,并区分事件的来源。

public static void main(String args[]){
    JButton btn1 = new JButton("btn1");
    btn1.setActionCommand("btn1");

    JButton btn2 = new JButton("btn2");
    btn2.setActionCommand("btn2");

    btn1.addActionListener(this);
    btn2.addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent ae) {
    String sourceBtn = ae.getActionCommand();
    System.out.println(sourceBtn + "Button pressed!");
}
 类似资料:
  • 问题内容: 有没有办法在Javascript中将变量名作为字符串获取?喜欢 我想这样做: 更新 我正在尝试使用JavaScript连接浏览器和另一个程序。我想将实例名称从浏览器发送到另一个程序以用作回调方法: 从另一个程序: 问题答案: 通常,在需要将名称映射到某个值并能够同时检索两者的情况下,可以使用哈希表。

  • 问题内容: 我有一个包含变量名称的字符串。我想获取该变量的值。 是否有可能访问该值使用? 问题答案: 我建议您改用: 通过执行操作创建地图 然后改变 至 并使用访问值

  • 问题内容: 如果我有一个如下所示的javascript对象 我有一个既传递对象又传递属性的函数,像这样 身体会是什么样? 问题答案: 您不需要它的功能-只需使用括号符号即可: 这等于点表示法,除了在使用方括号表示法时也可能来自变量,函数返回值等的事实。 如果需要它的功能,则为: 为了回答下面与原始问题没有直接关系的一些注释,可以通过多个括号引用嵌套对象。如果您有这样的嵌套对象: 您可以访问财产的,

  • 问题内容: 为什么JavaScript不允许模板字符串作为对象属性键?例如,当我输入: 到NodeJS REPL中,它会引发带有长堆栈跟踪的“意外模板字符串”。属性值很好,但是,这并不出乎意料。浏览器中也会发生类似的错误,例如Firebug抛出一个带有“无效属性ID”的错误。 “计算的属性名称”中允许使用模板字符串。例如,这在所有支持以下语法的浏览器中都可以完美编译: 并创建对象。 为什么不允许模

  • 问题内容: 我打算在不久的将来制作一组文件,而组织它的最佳方法是有一个列表,该列表将位于文件的最顶部,之后将要处理大量的代码。该列表控制什么以及如何操作。我只想写一次上述列表,并且该列表是以下格式的文件夹和文件名的列表: 如您所见,它们是相同的(有点)。文件名末尾是文件夹名,但是导入XXX并不需要导入XXX.py,因此我看不到这会引起问题。 我面临的问题是使用这种方法导入… 因此,对于我进行的每个

  • 我有这样的URI: 我需要一个包含解析元素的集合: 确切地说,我需要C#/.NET方法的Java等价物。