所以我正在努力学习挥杆,并且在尝试改变按钮颜色时遇到一些麻烦。我想要做的是创建一个自定义按钮,它有三种不同的状态,UP,DOWN和MISSING。 UP应该显示一个Icon,down应该是蓝色,MISSING应该是白色。
问题在于,我似乎无法使用枚举来改变类“内部”的颜色,而是必须创建一个新类或更改类之外的背景颜色,这将使枚举变得毫无意义。我搞砸了哪里?
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;
}
}
答案 0 :(得分:2)
function removeClient($file, $post, $client) {
$json = json_decode(file_get_contents($file));
$json[$post] = array_filter($json[$post], function($x) use($client) {
return $x != $client;
});
file_put_contents($file, json_encode($json));
}
这将最终落入瀑布。将您的代码更改为:
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);
作为遗失和失败的颜色。