gpt4 book ai didi

java - 在java swing中添加多张图片的if语句

转载 作者:行者123 更新时间:2023-11-29 08:31:25 27 4
gpt4 key购买 nike

您好,我正在开发一个程序,需要随机取 1-6 个骰子

我想为任何数字节目展示一张图片。

这里我用jlable初始化了图片

JLabel diceNumber;

Random r = new Random();
int roll;


ImageIcon dicePic1 = new ImageIcon("dice1_.png");
ImageIcon dicePic2 = new ImageIcon("dice2.png");
ImageIcon dicePic3 = new ImageIcon("dice3.png");
ImageIcon dicePic4 = new ImageIcon("dice4.png");
ImageIcon dicePic5 = new ImageIcon("dice5.png");
ImageIcon dicePic6 = new ImageIcon("dice6.png");

JLabel diceNum1 = new JLabel("", dicePic1, JLabel.CENTER);
JLabel diceNum2 = new JLabel("", dicePic2, JLabel.CENTER);
JLabel diceNum3 = new JLabel("", dicePic3, JLabel.CENTER);
JLabel diceNum4 = new JLabel("", dicePic4, JLabel.CENTER);
JLabel diceNum5 = new JLabel("", dicePic5, JLabel.CENTER);
JLabel diceNum6 = new JLabel("", dicePic6, JLabel.CENTER);

这是显示一张图片的面板使用 if 语句,我必须初始化 diceNumber

JPanel panel6 = new JPanel();
diceNumber = new JLabel("1");

if (diceNumber.getText().equals("1")) {
panel6.add(diceNum1);
}

else if (diceNumber.getText().equals("2")) {
panel6.add(diceNum2);
}

else if (diceNumber.getText().equals("3")) {
panel6.add(diceNum3);
}

else if (diceNumber.getText().equals("4")) {
panel6.add(diceNum4);
}

else if (diceNumber.getText().equals("5")) {
panel6.add(diceNum5);
}

else if (diceNumber.getText().equals("6")) {
panel6.add(diceNum6);
}

这里是我开始滚动的时候

public void actionPerformed(ActionEvent e) {


if (e.getSource() == dice) {

roll = r.nextInt(6) + 1;

if (roll == 1) {
diceNumber.setText("1");
}

else if (roll == 2) {
diceNumber.setText("2");
}

else if (roll == 3) {
diceNumber.setText("3");
}

else if (roll == 4) {
diceNumber.setText("4");
}

else if (roll == 5) {
diceNumber.setText("5");
}

else if (roll == 6) {
diceNumber.setText("6");
}

问题是 diceNumber 总是取值“1”并且永远不会改变有什么帮助吗?

最佳答案

diceNumber = new JLabel("1");

紧接在对 diceNumber 文本进行逻辑检查之前。在此阶段,您启动了一个带有文本“1”的 JLabel,因此在此阶段它将始终为“1”。直到很久以后才更改文本,此时您不再检查以设置骰子图像。您采用的方法类似于 Rube Goldberg 机器;触发一系列事件来执行一个相对简单的任务。一个简单的解决方案是:

    List<JLabel> disc = new ArrayList<>();
for (int i = 1; i <= 6; i++) {
disc.add(new ImageIcon(String.format("dice%d_.png", i));
}

然后当你需要改变你调用的图像时:

int roll = r.nextInt(6) + 1;
panel.add(disc[roll]);

无论如何,可以对代码进行许多改进;我建议您将过多的 if 语句更改为:

diceNumber.setText(roll.toString()); or
diceNumber.setText(roll + "");

关于java - 在java swing中添加多张图片的if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com