如何更改Java按钮的颜色



所以我试图学习摇摆,并遇到一些麻烦,试图改变我的按钮的颜色。我要做的是创建一个具有三种不同状态的自定义按钮,即向上,向下和丢失。上应该显示一个图标,向下应为蓝色,缺失应为白色。

问题在于,我似乎无法使用枚举的颜色来更改"内部"颜色,而是必须创建一个新的类或在同类之外更改背景颜色,而女巫会使枚举毫无意义。我在哪里弄乱?

import java.awt.*;
import javax.swing.*;
import static javax.swing.JOptionPane.*;
public class Card extends JButton {
    Icon icon;
    Status status;
    public enum Status {
    MISSING, DOWN, UP
    }
    public Card(Icon icon) {
    this.icon = icon;
    setStatus(Card.Status.MISSING);
    }
    public Card(Icon icon, Status status){
    this.icon = icon;
    setStatus(status);  
    }
    public Card(Status status) {
    setStatus(status);
    }
    public void setStatus(Status newStatus) {
    this.status = newStatus;
    switch(status){
    case MISSING:
        this.setBackground(Color.white);
    case DOWN:
        this.setBackground(Color.blue);
    case UP:
        this.setIcon(icon);
    }
    }
    public Status getStatus() {
    return this.status;
    }  
}
case MISSING:
        this.setBackground(Color.white);
    case DOWN:
        this.setBackground(Color.blue);
    case UP:
        this.setIcon(icon);

这将最终成为瀑布。更改您的代码:

case MISSING:
        this.setBackground(Color.white);
        break; // ends the switch block in case of missing
    case DOWN:
        this.setBackground(Color.blue);
        break; // ends the switch block in case of down
    case UP:
        this.setIcon(icon);

如果您不这样做,瀑布原则将执行以下所有案例块,导致每个选项执行 this.setIcon(icon);作为每种情况的最终语句,而this.setBackground(Color.blue);作为缺失和下降的颜色。

最新更新