2017-02-15 230 views
0

我已經看到了一些其他問題和答案,我已經做了同樣的事情,但我無法弄清楚爲什麼我的程序無法正常工作。我已經測試過代碼,並且它能正常工作,直到它應該顯示圖像。它甚至將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"); 
      } 
     } 
    } 
} 
+0

你永遠不會改變'actionPerformed'方法中標籤的'Icon' – MadProgrammer

回答

0

我敢肯定你忘了實際加載圖像

image = new JLabel(new ImageIcon(imageNumber)); 

開關/ case語句。

+0

'image.setIcon(new ImageIcon(imageNumber)'會更容易,問題也更少...這種方式OP不會結束屏幕上有幾十個標籤:P – MadProgrammer

+0

也可以工作,我很久沒有使用過JFrame,也沒有意識到這是一種可用的方法:P – Nepromine

+0

在您的答案下有一個編輯鏈接,以便在情況下進行修改你會看到改善答案的方法。 –

相關問題