2016-11-25 118 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使用Action監聽器。 – KyleKW

+2

爲了更好的幫助,請儘快發佈[mcve] – Frakcool

回答

1

enter image description here

要設置一個JButton的背景色,你可以使用setBackground(Color)

如果你想切換按鈕,你必須添加一個ActionListener到按鈕,所以當它被點擊時,它會改變。你不要必須使用MouseListener

我在這裏所做的是我設置了一個布爾值,每次點擊按鈕時都會自行翻轉。 (TRUE變爲FALSE,點擊時FALSE變爲TRUE)。 XOR已被用來實現這一點。

既然你想要比原來的JButton更多的屬性,你可以通過從JButton擴展它來定製你自己的屬性。

這樣做可讓您享受JComponents的好處,同時允許您添加自己的功能。我的定製按鈕

實施例:

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"); 
     }   
    } 
} 

的JPanel的實施例爲包含定製按鈕:

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 
      } 
     }); 
    } 
} 

澆道類驅動代碼:

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 Swing創建了JButton,這會更困難嗎? – Smiddy