2016-11-25 3 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

Я не уверен, почему вам нужен Mouse Listener, просто используйте Action Listeners для вашего JButton. – 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

Будет ли это сложнее, если я создам свой JButton с GUI Swing? – Smiddy

Смежные вопросы