2011-11-18 5 views
6

これは本当に理論的な質問になります。私は自分のJButtonで何かをする必要があります。どこから始めたらいいかわかりません。JButtonを実際に選択する方法

私が必要とするのは、JButtonをクリックし、それが選択されていることを視覚的に証明できるようにすることです(赤い枠線や白い背景など)。同じように別のJButtonが選択されるまで、そのようにしておきたいと思います。今、Jbuttonをクリックすると、クリックされた短いビジュアル・ディスプレイが表示されますが、それを長くすることはできません。

私はChangeListenersで少し再生しようとしましたが、結果はありませんでした。

私の質問は基本的にはどのようなアプローチですか?

1 - バックのChangeListenerに行く、それが唯一のオプション 2だ - JButtonのは、それはあまりにも曖昧だが、私が見つけた他のすべてがスーパー特異的であった、と返事をしなかった場合は、正確にその

申し訳ありませんがない別のオプションを持っています私の質問。

答えて

10

ボタングループにJToggleButtonを追加して、一度に1つのボタンだけが選択されるようにしたいのだろうかと思います。

編集例えば

ようになり
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

public class ToggleArray extends JPanel { 
    private static final int SIDE = 5; 

    public ToggleArray() { 
     ActionListener listener = new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("Button selected: " + e.getActionCommand()); 
     } 
     }; 

     setLayout(new GridLayout(SIDE, SIDE)); 
     ButtonGroup btnGroup = new ButtonGroup(); 
     for (int i = 0; i < SIDE * SIDE; i++) { 
     String text = String.format("[%d, %d]", i % SIDE, i/SIDE); 
     JToggleButton btn = new JToggleButton(text); 
     btn.addActionListener(listener); 
     btnGroup.add(btn); 
     add(btn); 
     } 
    } 

    private static void createAndShowGui() { 
     ToggleArray mainPanel = new ToggleArray(); 

     JFrame frame = new JFrame("ToggleArray"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 
} 


enter image description here

+0

+1、良い提案。 – mre

+0

+1 JToggleButtonについてではなくButtonGroupについてhttp://tips4java.wordpress.com/2008/11/09/select-button-group/ – mKorbel

+0

おっと、はい、正確に私が必要とするかもしれない、ありがとう) –

0

あなたは、背景色を変えてみてください:

boolean jButton1clicked = false; 

jButton1.addActionListener(new ActionListener(){ 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     jButton1selected = !jButton1selected; 
    } 
); 

jButton1.setBackgroundColor(jButton1clicked ? Color.green : Color.red); 
+1

これは、一部のLook&Feel実装には目に見える効果がありません。 – trashgod

関連する問題