所以我试图学习摇摆,并遇到一些麻烦,试图改变我的按钮的颜色。我要做的是创建一个具有三种不同状态的自定义按钮,即向上,向下和丢失。上应该显示一个图标,向下应为蓝色,缺失应为白色。
问题在于,我似乎无法使用枚举的颜色来更改"内部"颜色,而是必须创建一个新的类或在同类之外更改背景颜色,而女巫会使枚举毫无意义。我在哪里弄乱?
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);
作为缺失和下降的颜色。