节目不会显示图片,我不知道为什么

时间:2017-02-15 03:23:33

标签: java jpanel imageicon swingx

我已经看到了其他一些问题和答案,并且我已经做了与他们相同的事情,但我无法弄清楚为什么我的计划不会起作用。我已经测试了代码,它可以正常工作,直到它应该显示图像。它甚至将imageNumber的字符串更改为图片的名称,但不会显示它。这就是我所拥有的:

import javax.swing.*;
import java.awt.event.*;
import java.util.Random;

public class DiceRollGUI {

        private static JPanel panel = new JPanel();
        private static String imageNumber = "No Set Image";
        private static JLabel image = new JLabel(new ImageIcon(imageNumber));
        private static JButton rollDie = new JButton("Roll die");

    public static void main(String[] args) {
        JFrame frame = new JFrame("Dice Roll GUI");
        JLabel labelOne = new JLabel("Press 'Roll' to roll the 6 sided die.");

        rollDie.setActionCommand("Roll");
        rollDie.addActionListener(new Button());

        frame.setVisible(true);
        frame.setSize(600, 700);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(panel);

        panel.add(labelOne);
        panel.add(rollDie);
    }

    public static class Button implements ActionListener {

        public void actionPerformed(ActionEvent event) {

            String command = event.getActionCommand();
            Random random = new Random();
            int randomNum = random.nextInt(6) + 1;

            if (command.equals("Roll")) {
                switch (randomNum) {
                    case 1:
                        imageNumber = ("dice1.png");
                        break;
                    case 2:
                        imageNumber = ("dice2.png");
                        break;
                    case 3:
                        imageNumber = ("dice3.png");
                        break;  
                    case 4:
                        imageNumber = ("dice4.png");
                        break;
                    case 5:
                        imageNumber = ("dice5.png");
                        break;
                    default:
                        imageNumber = ("dice6.png");
                        break;
                }
                panel.add(image);
                rollDie.setText("Roll Again");
                imageNumber = ("No Set Image");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我很确定你忘了实际加载图片

image = new JLabel(new ImageIcon(imageNumber));
切换/案例陈述后

相关问题