2014-01-16 51 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

相关问题