2014-01-16 53 views
0

我想知道如何在Netbeans的已經打開的GUI中打開一個新的選項卡/窗口。如何打開新的選項卡或打開新窗口在按鈕按下已經可見的GUI?

此外,我試圖製作的遊戲每個窗口都有1個問題,並且有4個答案按鈕供您選擇,如果您得到正確答案,您的分數將保存在可用於整個代碼的變量中。

**package pokemontrivia; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JFrame; 

public class triviagui extends javax.swing.JFrame implements ActionListener{ 

    public triviagui() { 
     initComponents(); 
     init(); 
    } 
    private void init(){ 
      setTitle("Pokemon Trivia Game"); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setSize(600, 480); 
      setLocationRelativeTo(null); 
      setVisible(true); 
      quitButton.addActionListener(new CloseListener()); 
    } 

    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jTextField1 = new javax.swing.JTextField(); 
     easyqestionsLabel = new javax.swing.JTextField(); 
     mediumqestionsLabel = new javax.swing.JTextField(); 
     hardqestionsLabel = new javax.swing.JTextField(); 
     playButton3 = new javax.swing.JButton(); 
     playButton2 = new javax.swing.JButton(); 
     playButton1 = new javax.swing.JButton(); 
     quitButton = new javax.swing.JButton(); 
     settingsButton = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jTextField1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N 
     jTextField1.setText("Welcome to Pokemon Trivia !"); 

     easyqestionsLabel.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N 
     easyqestionsLabel.setText("Easy Questions"); 

     mediumqestionsLabel.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N 
     mediumqestionsLabel.setText("Medium Questions"); 

     hardqestionsLabel.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N 
     hardqestionsLabel.setText("Hard Questions"); 

     playButton3.setText("Play !"); 

     playButton2.setText("Play !"); 

     playButton1.setText("Play !"); 

     quitButton.setText("Quit"); 

     settingsButton.setText("Settings"); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(85, 85, 85) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
         .addComponent(mediumqestionsLabel) 
         .addComponent(playButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addComponent(easyqestionsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGroup(layout.createSequentialGroup() 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
          .addComponent(hardqestionsLabel) 
          .addComponent(playButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE) 
          .addComponent(playButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addComponent(settingsButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) 
          .addComponent(quitButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)))) 
       .addGap(84, 84, 84)) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(116, 116, 116) 
       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(127, Short.MAX_VALUE)) 
     ); 

     layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {easyqestionsLabel, hardqestionsLabel, mediumqestionsLabel}); 

     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 86, Short.MAX_VALUE) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(settingsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addGap(17, 17, 17) 
         .addComponent(quitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(easyqestionsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(playButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(mediumqestionsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(playButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(hardqestionsLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(playButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))) 
       .addGap(69, 69, 69)) 
     ); 

     layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {playButton1, playButton2, playButton3}); 

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

    public static void main(String args[]) { 

     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(triviagui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(triviagui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(triviagui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(triviagui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 

       new triviagui().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify      
    private javax.swing.JTextField easyqestionsLabel; 
    private javax.swing.JTextField hardqestionsLabel; 
    private javax.swing.JTextField jTextField1; 
    private javax.swing.JTextField mediumqestionsLabel; 
    private javax.swing.JButton playButton1; 
    private javax.swing.JButton playButton2; 
    private javax.swing.JButton playButton3; 
    private javax.swing.JButton quitButton; 
    private javax.swing.JButton settingsButton; 
    // End of variables declaration     

    @Override 
    public void actionPerformed(ActionEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

}** 
+1

['CardLayout'](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)此 – MadProgrammer

+0

@MadProgrammer製成給予了很大的尖端,但如果它總是*一個問題,並且有4個答案,那麼我傾向於在問題中只有一個'JLabel',在一個按鈕組中有4個'JRadioButton'對象用於答案。當用戶選擇一個答案並被告知正確/錯誤時,更改問題的文本(usinf'setText()')和可能的答案。這樣做的優點是隻需要一個面板即可處理多達數千個問題。 –

回答

3

我傾向於簡單地對問題和答案的按鈕組4×JRadioButton對象JLabel。當用戶選擇一個答案並被告知正確/錯誤時,更改問題的文本(使用setText())和可能的答案。

這樣做的好處是隻需要一個面板就可以處理多達數千個問題。

如果必須有一個面板用於問題,另一個用於結果,則使用帶有兩張卡片的CardLayout。一個是問題,另一個是答案。

short example顯示如何使用CardLayout

+0

感謝幫助了很多,但對於我的項目特別是我需要能夠從數組列表中讀取其中有30個問題的問題並將問題更改爲JLabel。你知道怎麼做嗎? – user3184504

+0

是的,是的,我有。鑑於這可以很容易地適應我概述的方法,我希望你會[接受](http://meta.stackexchange.com/a/65088/155831)這個答案和問..新的問題..新題。請不要把它誤認爲'一站式,完成我的代碼'商店。這是一個問答網站,針對每個(接受的)答案中的一個具體問題提供最佳效果。 –

+0

我真的不明白,但我會試試看 – user3184504

相關問題