2016-11-25 20 views
1

JButtonのデフォルトの色を黄色に設定する際に問題がありますか?JButtonのデフォルトの背景色を設定する方法は?

また、ボタンをクリックすると赤に変わり、既に赤であればクリックして黄色に戻ります。私が何をすべきかについてのアイデアは何ですか?

private void goldSeat1ActionPerformed(java.awt.event.ActionEvent evt){           

    // TODO add your handling code here: 

    goldSeat1.setBackground(Color.YELLOW); 

}           

private void goldSeat1MouseClicked(java.awt.event.MouseEvent evt) {          

    // TODO add your handling code here: 

    goldSeat1.setBackground(Color.red); 

} 
+0

** ActionPerformed **メソッドを最初に(デフォルトで)使用しようとしましたか?変更する前に、毎回**ボタンのカラーゲッター**でカラーをチェックしますか? –

+0

ここでマウスリスナーが必要な理由がわかりません。あなたのJButtonにアクションリスナーを使用するだけです。 – KyleKW

+2

より良いヘルプをすぐに投稿してください[mcve] – Frakcool

答えて

1

enter image description here

のJButtonの背景色を設定するには、あなたはsetBackground(Color)を使用することができます。

ボタンを切り替える場合は、ボタンにActionListenerを追加する必要があります。クリックすると変更されます。あなたはではありませんMouseListenerを使用する必要があります。

私がここで行ったことは、ボタンをクリックするたびに自分自身を反転させるブール値を設定することです。 (TRUEはFALSEになり、FALSEはクリック時にTRUEになります)。これを達成するためにXORが使用されています。

元のJButtonより多くのプロパティが必要なので、JButtonから拡張して独自のプロパティをカスタマイズできます。

このようにすると、JComponentsの利点を楽しむことができます。同時に、独自の機能を追加することもできます。私のカスタマイズされたボタンの

例:

:コードを駆動するためにランナークラス

class DrawingSpace extends JPanel{ 

    private ToggleButton btn; 

    public DrawingSpace(){ 
     setLayout(new BorderLayout()); 
     setPreferredSize(new Dimension(200, 200)); 
     btn = new ToggleButton("Toggle Button"); 
     setComponents(); 
    } 

    private void setComponents(){ 
     add(btn); 
     btn.addActionListener(new ActionListener(){    
      @Override 
      public void actionPerformed(ActionEvent e){ 
       btn.toggle(); //change button ON/OFF status every time it is clicked 
      } 
     }); 
    } 
} 

:カスタマイズされたボタンを含むためのJPanelの

class ToggleButton extends JButton{ 

    private Color onColor; 
    private Color offColor; 
    private boolean isOff; 

    public ToggleButton(String text){ 
     super(text); 
     init(); 
     updateButtonColor(); 
    } 

    public void toggle(){ 
     isOff ^= true; 
     updateButtonColor();    
    } 

    private void init(){ 
     onColor = Color.YELLOW; 
     offColor = Color.RED; 
     isOff = true; 
     setFont(new Font("Arial", Font.PLAIN, 40));  
    } 

    private void updateButtonColor(){ 
     if(isOff){ 
      setBackground(offColor); 
      setText("OFF"); 
     }   
     else{ 
      setBackground(onColor); 
      setText("ON"); 
     }   
    } 
} 

class ButtonToggleRunner{ public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ JFrame f = new JFrame("Toggle Colors"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new DrawingSpace()); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } }); } } 
+0

GUIスイングで私のJButtonを作成した場合、これはより難しくなりますか? – Smiddy

関連する問題