-1

我有一组按 GridLayout 排列的按钮。我想根据其文本访问特定按钮。有没有办法根据其文本检索按钮?

4

4 回答 4

5

您必须遍历面板中的组件并查找它。就像是:

for (Component comp : panel.getComponents())
    if (comp instanceof JButton && searchText.equals(((JButton) comp).getText()))
        return (JButton) comp;

Map<String, JButton> buttonMap但是,我建议您在创建和添加按钮时填充 a 。然后你只需buttonMap.get(searchText)抓住你的按钮:

JPanel panel = new JPanel(new GridLayout(3, 3));
for (int i = 1; i <= 9; i++) {
    JButton button = new JButton("Button " + i);
    panel.add(button);

    // save it to a map for easy retrieval
    buttonMap.put(button.getText(), button);
}
于 2012-08-21T05:16:07.560 回答
2

遍历面板中的组件并简单地过滤结果。

for (Component component : getComponents()) {
    if (component instanceof JButton &&
       ((JButton) component).getText().equals(searchText)) {
        return component;
    }
}
于 2012-08-21T05:18:43.397 回答
1

您可以创建 JButton 名称到 JButton 对象的映射

Map<String, JButton> mbutt = new HashMap<String, JButton>();

您可以通过像这样迭代它来访问 String 和 JButton。

for(Map.Entry<String,JButton> map : mbutt.entrySet()){

       String k = map.key();  // Key 

       JButton bu = map.value();  // JButton


}
于 2012-08-21T05:22:11.760 回答
0
public void actionPerformed(ActionEvent e) {
String name= e.getActionCommand();
}

将 actionListener 添加到所有按钮后。上面代码中的名称字符串获取写在文本上的文本字符串。之后,您可以根据其文本处理按钮。

于 2012-11-22T06:52:31.550 回答