2016-04-25 9 views
1

UIとしてSwingを使用しているアプリケーションがあります。私は、アプリケーションが使用している通信のタイプを切り替えるボタンが必要です。トグルボタンを使用して、選択されている通信のタイプを特定します。JToggleButtonでEnabledエフェクトを無効にする

私の問題は、クリックした後にボタンの色を変更したくないということです。現在、ボタンは次のようになります... 非選択

http://i.stack.imgur.com/Ccdie.png

そして、クリックされたとき、それはこのようになります...

は、テキスト変更

http://i.stack.imgur.com/Q5yp4.png

を選択します私が欲しいものですが、私はそれらが同じ色/スタイルを持つことを望みます。

はここ

JToggleButton tglbtnCommunicationType = new JToggleButton("AlwaysOn"); 
    tglbtnCommunicationType.setFocusPainted(false); 
    tglbtnCommunicationType.addChangeListener(new ChangeListener() { 
     public void stateChanged(ChangeEvent tgl) { 
      System.out.println("ChangeEvent!"); 
      if(tglbtnCommunicationType.isSelected()){ 
       tglbtnCommunicationType.setText("REST"); 
       tglbtnCommunicationType.setBackground(UIManager.getColor("Button.background")); 
      } 
      else 
      { 
       tglbtnCommunicationType.setText("AlwaysOn"); 
      }; 
     } 
    }); 

私の考えは、それが標準の背景色に選択されたときに背景を設定することを修正するだろうということですが、それはそれのように見えない...これは私のコードです。何か案は?

ありがとうございます!

回答: 代わりにJButtonに切り替えました。助けてくれてありがとうございました!

JButton btnCommunicationType = new JButton("AlwaysOn"); 
    btnCommunicationType.setFocusPainted(false); 
    btnCommunicationType.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      if(btnCommunicationType.getText().equals("AlwaysOn")) 
      { 
       btnCommunicationType.setText("REST"); 
       //TODO: Insert Code for Switching Communication to REST here 
      } 
      else if(btnCommunicationType.getText().equals("REST")){ 
       btnCommunicationType.setText("AlwaysOn"); 
       //TODO: Insert Code for Switching Communication to AlwaysOne here 
      } 
     } 
    }); 
    btnCommunicationType.setBounds(275, 199, 97, 25); 
    thingWorxConnectionPanel.add(btnCommunicationType); 
+0

可能な重複http://stackoverflow.com/questions/ 12227455/disable-standard-reprinting-of-jtogglebutton-when-is-selected) – Berger

+2

絵に違いがない場合、どのように選択されているのでしょうか?理由のために、UIには異なる絵があります。使用するように設計された方法でコンポーネントを使用してください。例えば、Workのようなエディターを取る。異なるアトリビュートでテキストのキャレットを移動すると、ボタンの背景が変わり、どの属性がテキストの一部であるかがわかります。視覚的な手掛かりがない場合は、なぜトグルボタンを使用しますか? 'テキストの変更は私が望むものですが、同じ色/スタイルを持つことを望みます.'同じ絵が欲しい場合は、JButtonを使います。 – camickr

+0

@camickrボタン上のテキストが変更されるため、ユーザーが選択されていることがわかります。 – mcheli

答えて

1

あなただけの代わりにJToggleButtonのJButtonのを使用することによってそれを行うことができ、

JButton showButton = new JButton("AlwaysOn"); 
showButton.addActionListener(new ActionListener() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
    String currentText = showButton.getText(); 
    if("AlwaysOn".equals(currentText)){ 
      showButton.setText("REST"); 
    }else{ 
      showButton.setText("AlwaysOn"); 
     } 
    } 
}); 
([これが選択されているJToggleButtonの標準再描画を無効にする]の