2012-11-17 98 views
1

我有一个当前使用超过200个按钮的应用程序,每个按钮都返回其变量名称的字符串。有没有办法做到这一点?为每一个设置名称属性将非常耗时。Netbeans中Swing组件的变量名称

+0

这个糟糕的修复糟糕的设计。重新设计应用程序的速度可能会更快,但这取决于对您而言,任何人都不明显的细节。你为什么想用'String'来标识按钮,它提供给应用程序的优点或特性。或最终用户? –

回答

2

使用按钮的集合:

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); 
} 
1

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