1
我有一个当前使用超过200个按钮的应用程序,每个按钮都返回其变量名称的字符串。有没有办法做到这一点?为每一个设置名称属性将非常耗时。Netbeans中Swing组件的变量名称
我有一个当前使用超过200个按钮的应用程序,每个按钮都返回其变量名称的字符串。有没有办法做到这一点?为每一个设置名称属性将非常耗时。Netbeans中Swing组件的变量名称
使用按钮的集合:
ActionListener theActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(((JButton) e.getSource()).getName());
}
};
List<JButton> buttons = new ArrayList<JButton>();
for (int i = 0; i < 200; i++) {
JButton button = new JButton("Button " + (i + 1));
button.setName("Button " + (i + 1));
button.addActionListener(theActionListener);
buttons.add(button);
}
使用JButton#putClientProperty
用于确定具体的JButton
buttons[i][j].putClientProperty("column", i);
buttons[i][j].putClientProperty("row", j);
buttons[i][j].addActionListener(new MyActionListener());
和ActionListener
得到(例如)
public class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
System.out.println("clicked column " + btn.getClientProperty("column")
+ ", row " + btn.getClientProperty("row"));
}
JButton
应该是使用Swing Action而不是ActionListener
这个糟糕的修复糟糕的设计。重新设计应用程序的速度可能会更快,但这取决于对您而言,任何人都不明显的细节。你为什么想用'String'来标识按钮,它提供给应用程序的优点或特性。或最终用户? –