用Arry创建的JButtonGrid和Arry中的actionlistener获取Button的信息?

时间:2016-10-07 18:49:02

标签: java arrays jframe jbutton

for (int b = 0; b < Hsize; b++) {
    for (int c = 0; c < Lsize; c++) {
        System.out.println(Hsize + Lsize);
        Button[b][c] = new JButton("b:" + b + "c:" + c);
        Button[b][c].setBounds(l, h, 40, 40);
        Button[b][c].addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println(e.getSource());
            }
        });
    }
}

按下其中一个按钮时的输出:

javax.swing.JButton[0 2,95,105,40x40,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@53c0c322,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=D:/Users/Max/workspace/Battleship/images/Unbenannt.png,disabledIcon=D:/Users/Max/workspace/Battleship/images/Unbenannt.png,disabledSelectedIcon=D:/Users/Max/workspace/Battleship/images/Unbenannt.png,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true]

如何仅过滤掉{0 2或其他任何不同的内容,例如b / c坐标?

1 个答案:

答案 0 :(得分:0)

由于您已将侦听器附加到按钮,因此您知道触发对象是Button。您可以将其强制转换为按钮,然后使用get方法访问所需的信息。现在你只是打印关于物体的一切。

  public void actionPerformed(ActionEvent e) {
      Button b = (Button)e.getSource();      
      System.out.println(b.getAlignmnetX()); //get whatever you need 
  }

Button继承自一堆类,因此您必须查找文档以确定哪些get方法可供您使用。

http://docs.oracle.com/javase/7/docs/api/java/awt/Button.html