-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 に答える