从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的东西。但根据我的知识,直到现在,它只会在方法的情况下,而不是在对象的情况下。或者我错过了什么?
答案 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!");
}