2013-12-22 89 views
0

我的JLabel和JTextField沒有出現在圖像上,我不知道爲什麼。我把圖片放在JLabel和setOpaque(false)上,但沒有運氣。有什麼建議?我在這裏先向您的幫助表示感謝。JTextField和JLabel沒有出現

 private JTextField tf; 
     private JLabel jl2; 
     private JLabel jl3; 

     public void window() { 
      ImageIcon ic = new ImageIcon("hangman.png"); 
      JFrame gameFrame = new JFrame(); 
      JPanel jp = new JPanel(); 
      jp.setOpaque(false); //!! 
      jp.setBorder(BorderFactory.createTitledBorder("")); 
      JLabel img = new JLabel(ic, JLabel.CENTER); 
      img.setOpaque(false); 
      JLabel jl = new JLabel("Enter a Letter:"); 
      jl.setFont(new Font("Rockwell", Font.PLAIN, 20)); 
      tf = new JTextField(1); 
      jl2 = new JLabel("Letters Used: "); 
      jl3 = new JLabel();//blank spaces 
      tf.setFont(new Font("Rockwell", Font.PLAIN, 20)); 
      jl2.setFont(new Font("Rockwell", Font.PLAIN, 20)); 
      jp.add(jl); 
      jp.add(tf); 
      jp.add(jl2); 
      jp.add(jl3); 
      gameFrame.add(img); 
      img.add(jp); 
      gameFrame.setTitle("Hangman"); 
      gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      gameFrame.setIconImage(
      new ImageIcon("Hangman-Game-grey.png").getImage()); 
      gameFrame.setResizable(false); 
      gameFrame.pack(); 
      gameFrame.setLocationRelativeTo(null); 
      gameFrame.setVisible(true); 
+0

爲了更好地幫助越早,張貼[SSCCE(HTTP:// SSCCE .org等/)。 –

回答

1

JLabel默認不使用佈局管理器,因此添加到標籤的組件不會被繪製。

嘗試設置佈局管理器。也許:

img.setLayout(new BorderLayout()); 

或選擇一個符合您的要求的佈局。

1

您應該分別將圖像,標籤和文本字段對象添加到面板。然後,您應該將該面板添加到您的框架。另外,在調用jp.add()方法之前,請輸入gameFrame.add(img);代碼。我不知道,如果這是你想要的,但是從你嘗試做,我可以說,下面的代碼應該工作:

public void window() 
     { 
     ImageIcon ic = new ImageIcon("hangman.png"); 
     JFrame gameFrame = new JFrame(); 
     JPanel jp = new JPanel(); 
     jp.setOpaque(false); // !! 
     jp.setBorder(BorderFactory.createTitledBorder("")); 
     JLabel img = new JLabel(ic, JLabel.CENTER); 
     img.setOpaque(false); 
     JLabel jl = new JLabel("Enter a Letter:"); 
     jl.setFont(new Font("Rockwell", Font.PLAIN, 20)); 
     tf = new JTextField(1); 
     jl2 = new JLabel("Letters Used: "); 
     jl3 = new JLabel();// blank spaces 
     tf.setFont(new Font("Rockwell", Font.PLAIN, 20)); 
     jl2.setFont(new Font("Rockwell", Font.PLAIN, 20)); 
     jp.add(img); 
     jp.add(jl); 
     jp.add(tf); 
     jp.add(jl2); 
     jp.add(jl3); 
     gameFrame.add(jp); 
     gameFrame.setTitle("Hangman"); 
     gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     gameFrame.setIconImage(new ImageIcon("1.jpg").getImage()); 
     gameFrame.setResizable(false); 
     gameFrame.pack(); 
     gameFrame.setLocationRelativeTo(null); 
     gameFrame.setVisible(true); 
     }