如何获取 JButton 的特定 ID?
How to get specific ID for a JButton?
我正在尝试构建一个使用 3x3 按钮网格的程序(使用 Java Swing),因此我使用 GridLayout 和循环来初始化它来创建按钮:
panel.setBorder(BorderFactory.createEmptyBorder(3,3,5,5))
panel.setLayout(new GridLayout(3,3,10,10));
String[] buttons = {"Top Left", "Top Middle", "Top Right", "Middle Left", "Middle", "Middle Right", "Bottom Left", "Bottom Middle", "Bottom Right"};
for(int i = 0; i < buttons.length; i++) {
buttray[i] = new JButton(buttons[i]);
panel.add(buttray[i]);
buttray[i].addActionListener(this);
}
按钮加载得很好,但我不明白如何使用 ActionListeners 来区分按钮。当我检查打印输出中的 paramString() 方法时,每个按钮都提供相同的修饰符:
Top Left
ACTION_PERFORMED,cmd=Top Left,when=1431640106712,modifiers=Button1
Top Middle
ACTION_PERFORMED,cmd=Top Middle,when=1431640107566,modifiers=Button1
Top Right
ACTION_PERFORMED,cmd=Top Right,when=1431640107978,modifiers=Button1
这个修饰符值是否充当按钮的标识符,如果是,我该如何更改?
有多种方法可以区分哪个按钮触发了 ActionEvent:
- Set/get每个按钮的动作指令(如
if (e.getActionCommand().equals("Top Left")
)
- 使用==比较实例(例如
if (e.getSource() == buttray[0] )
)
- 获取 JButton 的文本(例如
if (e.getSource().getText().equals("Top Left")
)
- Set/get JButton 的名称(例如
if (e.getSource().getName().equals("Top Left")
)
- 为每个按钮添加不同的 ActionListener(换句话说,1:1 按钮的监听器)
- ...也许更多的方法会在下面的评论部分添加。
您已经通过数组索引跟踪按钮,即 buttray[i]。使用 getSource()
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
for(int i=0;i<buttray.length;i++)
if(e.getSource()==buttray[i])
{
//code here
}
}
我正在尝试构建一个使用 3x3 按钮网格的程序(使用 Java Swing),因此我使用 GridLayout 和循环来初始化它来创建按钮:
panel.setBorder(BorderFactory.createEmptyBorder(3,3,5,5))
panel.setLayout(new GridLayout(3,3,10,10));
String[] buttons = {"Top Left", "Top Middle", "Top Right", "Middle Left", "Middle", "Middle Right", "Bottom Left", "Bottom Middle", "Bottom Right"};
for(int i = 0; i < buttons.length; i++) {
buttray[i] = new JButton(buttons[i]);
panel.add(buttray[i]);
buttray[i].addActionListener(this);
}
按钮加载得很好,但我不明白如何使用 ActionListeners 来区分按钮。当我检查打印输出中的 paramString() 方法时,每个按钮都提供相同的修饰符:
Top Left
ACTION_PERFORMED,cmd=Top Left,when=1431640106712,modifiers=Button1
Top Middle
ACTION_PERFORMED,cmd=Top Middle,when=1431640107566,modifiers=Button1
Top Right
ACTION_PERFORMED,cmd=Top Right,when=1431640107978,modifiers=Button1
这个修饰符值是否充当按钮的标识符,如果是,我该如何更改?
有多种方法可以区分哪个按钮触发了 ActionEvent:
- Set/get每个按钮的动作指令(如
if (e.getActionCommand().equals("Top Left")
) - 使用==比较实例(例如
if (e.getSource() == buttray[0] )
) - 获取 JButton 的文本(例如
if (e.getSource().getText().equals("Top Left")
) - Set/get JButton 的名称(例如
if (e.getSource().getName().equals("Top Left")
) - 为每个按钮添加不同的 ActionListener(换句话说,1:1 按钮的监听器)
- ...也许更多的方法会在下面的评论部分添加。
您已经通过数组索引跟踪按钮,即 buttray[i]。使用 getSource()
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
for(int i=0;i<buttray.length;i++)
if(e.getSource()==buttray[i])
{
//code here
}
}