1

当我点击按钮时,我需要做什么,他给了我按钮内的文字?因为在这段代码中,如果我单击按钮返回最后一个“i”var 值......在这种情况下,他给了我“5”。

for(int i; i < 5; i++) {
      JButton button = new JButton();
      button.setText("" + i);
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ae) { 
           // TODO add your handling code here:
           System.out.print("\n Test: " + button.getText());

         } 
      });
      button.setSize(60,20);
      button.setLocation(100, 140);
      button.setVisible(true);
      this.add(button);
      this.revalidate();
      this.repaint();
  }
4

2 回答 2

3

改变:

System.out.print("\n Test: " + button.getText());

System.out.print("\n Test: " + ae.getActionCommand());
于 2013-09-15T16:38:50.640 回答
2

您没有发布原始代码。正如发布的那样,它不会编译,所以我认为button是你类中的一个字段。

发布的代码只需稍作修改即可工作:

for (int i; i < 5; i++) {
    // Notice the "final"
    final JButton button = new JButton();
    ...

即使您遵循 Hovercraft 从动作事件中获取字符串的良好建议,您也应该这样做,因为该button字段是无用的。

从动作事件中获取字符串,您还可以为所有按钮重用一个侦听器:

ActionListener listener = new ActionListener() {
    public void actionPerformed(ActionEvent ae) { 
      System.out.print("\n Test: " + ae.getActionCommand());
    } 
};

for (int i; i < 5; i++) {
    final JButton button = new JButton();
    button.setText(Integer.toString(i));
    button.addActionListener(listener);
    // the rest as before
    ...
}
于 2013-09-15T16:54:50.543 回答