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

时间:2014-07-13 08:25:39

标签: java jbutton

从java中的string值创建对现有对象的引用

在我的项目中,有许多按钮(目前大约70个);每个按钮在数据库的jlabel中提出一个问题。 现在,每个按钮都会分配颜色(jButton来自精确摆动),具体取决于用户选择是否要查看问题,或者他是否标记了问题的答案。

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

我在想的是一种创建函数和传递包含按钮名称的字符串参数的方法。 所以它将是: void selectfromdatabase(String buttonname) {     //(.).setBackground(Color.yellow); < =这就是我需要的 } 所以现在如果buttonname的值为jButton1,则结果命令为jButton1.setBackground(Color.yellow);

我已经提到了一些SO论坛,我发现了一些名为Reflection的东西。但根据我的知识,直到现在,它只会在方法的情况下,而不是在对象的情况下。或者我错过了什么?

1 个答案:

答案 0 :(得分:0)

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!");
}