我无法将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 :(得分:1)
要设置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);
}
});
}
}