2012-07-17 39 views
2

我正在通過Java設計一款遊戲,將Swing作爲我的GUI。 NetBeans是我的編輯器,我試圖使用它們的編輯器模式,但是無論何時運行代碼,都不會顯示任何內容。我試着把它建成一個罐子,但是當我運行這個罐子時,沒有任何東西出現。Java Swing容器不會出現

這裏是我的代碼:再次

package kraz; 
public class KrazGUI extends javax.swing.JFrame { 
    public KrazGUI() { 
     initComponents(); 
     setVisible(true); 
    } 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     PathOptions = new javax.swing.ButtonGroup(); 
     InventoryOptions = new javax.swing.ButtonGroup(); 
     Settings = new javax.swing.ButtonGroup(); 
     GameOptions = new javax.swing.ButtonGroup(); 
     Holder = new javax.swing.JPanel(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     EventField = new javax.swing.JTextPane(); 
     PathLabel = new javax.swing.JLabel(); 
     Left = new javax.swing.JButton(); 
     Right = new javax.swing.JButton(); 
     Middle = new javax.swing.JButton(); 
     InvLabel = new javax.swing.JLabel(); 
     PickUp = new javax.swing.JButton(); 
     SetDown = new javax.swing.JButton(); 
     Use = new javax.swing.JButton(); 
     SettingLabel = new javax.swing.JLabel(); 
     HighScores = new javax.swing.JButton(); 
     EditName = new javax.swing.JButton(); 
     EditGame = new javax.swing.JButton(); 
     ProgressLabel = new javax.swing.JLabel(); 
     ProgressBar = new javax.swing.JProgressBar(); 
     HealthBar = new javax.swing.JProgressBar(); 
     HealthLabel = new javax.swing.JLabel(); 
     RestartGame = new javax.swing.JButton(); 
     EndGame = new javax.swing.JButton(); 
     Exit = new javax.swing.JButton(); 
     GameLabel = new javax.swing.JLabel(); 
     jPanel1 = new javax.swing.JPanel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     setAlwaysOnTop(true); 
     setType(java.awt.Window.Type.POPUP); 

     jScrollPane1.setViewportView(EventField); 

     PathLabel.setText("Path Options:"); 

     Left.setText("Go Left"); 
     PathOptions.add(Left); 

     Right.setText("Go Right"); 
     PathOptions.add(Right); 

     Middle.setText("Go Middle"); 
     PathOptions.add(Middle); 

     InvLabel.setText("Inventory Options:"); 

     PickUp.setText("Pick Up"); 
     InventoryOptions.add(PickUp); 

     SetDown.setText("Set Down"); 
     InventoryOptions.add(SetDown); 

     Use.setText("Use"); 
     InventoryOptions.add(Use); 

     SettingLabel.setText("Settings:"); 

     HighScores.setText("High Scores"); 
     Settings.add(HighScores); 

     EditName.setText("Edit Name"); 
     Settings.add(EditName); 

     EditGame.setText("Edit Game"); 
     Settings.add(EditGame); 

     ProgressLabel.setText("Progress:"); 

     HealthLabel.setText("Health:"); 

     RestartGame.setText("Restart Game"); 
     GameOptions.add(RestartGame); 

     EndGame.setText("End Game"); 
     GameOptions.add(EndGame); 

     Exit.setText("Exit"); 
     GameOptions.add(Exit); 

     GameLabel.setText("Game Options:"); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 100, Short.MAX_VALUE) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 100, Short.MAX_VALUE) 
     ); 

     javax.swing.GroupLayout HolderLayout = new javax.swing.GroupLayout(Holder); 
     Holder.setLayout(HolderLayout); 
     HolderLayout.setHorizontalGroup(
      HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(HolderLayout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(HolderLayout.createSequentialGroup() 
         .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING) 
          .addGroup(HolderLayout.createSequentialGroup() 
           .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
            .addGroup(HolderLayout.createSequentialGroup() 
             .addComponent(InvLabel) 
             .addGap(18, 18, 18) 
             .addComponent(PickUp) 
             .addGap(18, 18, 18) 
             .addComponent(SetDown) 
             .addGap(18, 18, 18) 
             .addComponent(Use)) 
            .addGroup(HolderLayout.createSequentialGroup() 
             .addComponent(SettingLabel) 
             .addGap(18, 18, 18) 
             .addComponent(HighScores) 
             .addGap(18, 18, 18) 
             .addComponent(EditName) 
             .addGap(18, 18, 18) 
             .addComponent(EditGame)) 
            .addGroup(HolderLayout.createSequentialGroup() 
             .addComponent(PathLabel) 
             .addGap(18, 18, 18) 
             .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
              .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
              .addGroup(HolderLayout.createSequentialGroup() 
               .addComponent(Left) 
               .addGap(18, 18, 18) 
               .addComponent(Right) 
               .addGap(18, 18, 18) 
               .addComponent(Middle))))) 
           .addGap(0, 17, Short.MAX_VALUE)) 
          .addGroup(HolderLayout.createSequentialGroup() 
           .addComponent(ProgressLabel) 
           .addGap(18, 18, 18) 
           .addComponent(ProgressBar, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
           .addComponent(HealthLabel) 
           .addGap(18, 18, 18) 
           .addComponent(HealthBar, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE))) 
         .addContainerGap()) 
        .addGroup(HolderLayout.createSequentialGroup() 
         .addComponent(GameLabel) 
         .addGap(18, 18, 18) 
         .addComponent(RestartGame) 
         .addGap(18, 18, 18) 
         .addComponent(EndGame) 
         .addGap(18, 18, 18) 
         .addComponent(Exit) 
         .addGap(0, 0, Short.MAX_VALUE)))) 
     ); 
     HolderLayout.setVerticalGroup(
      HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(HolderLayout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(18, 18, 18) 
       .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(Right) 
         .addComponent(Middle) 
         .addComponent(Left)) 
        .addComponent(PathLabel)) 
       .addGap(18, 18, 18) 
       .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(InvLabel) 
        .addComponent(PickUp) 
        .addComponent(SetDown) 
        .addComponent(Use)) 
       .addGap(18, 18, 18) 
       .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(SettingLabel) 
        .addComponent(HighScores) 
        .addComponent(EditName) 
        .addComponent(EditGame)) 
       .addGap(18, 18, 18) 
       .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
        .addComponent(ProgressLabel) 
        .addComponent(ProgressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(HealthBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(HealthLabel)) 
       .addGap(18, 18, 18) 
       .addGroup(HolderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(GameLabel) 
        .addComponent(RestartGame) 
        .addComponent(EndGame) 
        .addComponent(Exit)) 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     ); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(Holder, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(Holder, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
     ); 

     pack(); 
    }// </editor-fold> 

    public static void main(String args[]) { 
     new KrazGUI(); 
    } 
    // Variables declaration - do not modify 
    private javax.swing.JButton EditGame; 
    private javax.swing.JButton EditName; 
    private javax.swing.JButton EndGame; 
    private javax.swing.JTextPane EventField; 
    private javax.swing.JButton Exit; 
    private javax.swing.JLabel GameLabel; 
    private javax.swing.ButtonGroup GameOptions; 
    private javax.swing.JProgressBar HealthBar; 
    private javax.swing.JLabel HealthLabel; 
    private javax.swing.JButton HighScores; 
    private javax.swing.JPanel Holder; 
    private javax.swing.JLabel InvLabel; 
    private javax.swing.ButtonGroup InventoryOptions; 
    private javax.swing.JButton Left; 
    private javax.swing.JButton Middle; 
    private javax.swing.JLabel PathLabel; 
    private javax.swing.ButtonGroup PathOptions; 
    private javax.swing.JButton PickUp; 
    private javax.swing.JProgressBar ProgressBar; 
    private javax.swing.JLabel ProgressLabel; 
    private javax.swing.JButton RestartGame; 
    private javax.swing.JButton Right; 
    private javax.swing.JButton SetDown; 
    private javax.swing.JLabel SettingLabel; 
    private javax.swing.ButtonGroup Settings; 
    private javax.swing.JButton Use; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JScrollPane jScrollPane1; 
    // End of variables declaration 
} 

感謝這裏的幫助。

+0

使顯示的行爲最短的例子,並使其成爲問題的一部分。 – 2012-07-17 17:33:18

+0

正如Thorbjorn所說,請發佈[SSCCE](http://sscce.org/) – mattbdean 2012-07-17 17:34:49

+0

請學習如何使用代碼構建gui,並且不要使用任何工具來構建Java中的gui,否則,您將難以維護或修改代碼。 – 2012-07-17 17:35:05

回答

3

當我運行JDK1.6下此代碼時,窗口顯示就好了。雖然,我不得不註釋掉下面一行是JDK1.7 API

setType(java.awt.Window.Type.POPUP); 

我想這行是問題。你使它成爲一個彈出式窗口。我會建議嘗試Type.NORMAL

小側面說明:您應調整的主要方法觸發對EDT的UI代碼:

public static void main(String args[]) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
     new KrazGUI(); 
     } 
    }); 
    } 

Concurrency in Swing教程以獲取更多信息的原因。

+0

謝謝,這完美解決了這個問題! – RipIt 2012-07-17 17:46:06

2

我能夠在Eclipse中執行程序,絕對沒有probs。 和我的Java版本是版本「1.7.0_03」 enter image description here

但仍然遵循以下這兩點有一個更好的方法。

1.從main方法中取出組件的聲明,並將它們放在Class作用域的類的開頭。

2.放置setVisible(true)

在主使用這...

SwingUtilities.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
     Test8 t = new Test8(); 
     t.setVisible(true); 
    } 
}); 
2

我剛剛粘貼你的代碼Eclipse和它似乎是工作(Java 7中):

enter image description here

+1

+1圖像,但另請參見[截圖](http://meta.stackexchange.com/questions/99734/how-do-i-create-a-screenshot-to-illustrate-a-post)。 – trashgod 2012-07-17 17:59:54