Я видел другие вопросы и ответы, и я сделал то же самое, что и они, но я не могу понять, почему моя программа не будет работать. Я протестировал код, и он работает нормально, пока он не отобразит изображение. Он даже изменяет строку 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");
}
}
}
}
Вы никогда не меняете «значок» метки в методе 'actionPerformed' – MadProgrammer