要設置一個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);
}
});
}
}
您是否曾嘗試首先使用** ActionPerformed **方法(默認情況下)?在進行任何更改之前,每次檢查帶有**按鈕的顏色獲取器**的顏色? –
我不確定爲什麼你需要一個鼠標監聽器,只需要爲你的JButton使用Action監聽器。 – KyleKW
爲了更好的幫助,請儘快發佈[mcve] – Frakcool