2013-10-18 114 views
-1

我需要準備一個界面,並且有可點擊的按鈕來顯示迄今爲止我們創建的所有不同的窗口。JPanel沒有顯示

現在,我的一個團隊成員爲我們希望用戶使用的每個窗口創建了多個JFrame。我們都在NetBeans IDE中工作。我試圖讓一個登錄窗口彈出,從那裏我將使所有的窗口顯示出來,當點擊一個按鈕應該引導用戶到該窗口。

這裏是我們至今: (主)

 import java.awt.*; 
    import javax.swing.*; 

    public class Corendon { 

    public static void main(String[] args) { 
      showLogin(); 
    } 

    private static void showLogin(){ 
     Login login = new Login(); 

     login.setVisible(true); 
     login.validate(); 
    } 
} 

在Login.java的代碼由用戶的要求:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/** 
* 
* @author Daan 
*/ 
public class Login extends javax.swing.JPanel { 

/** 
* Creates new form Login 
*/ 
public Login() { 
    initComponents(); 
} 

/** 
* This method is called from within the constructor to initialize the form. 
* WARNING: Do NOT modify this code. The content of this method is always 
* regenerated by the Form Editor. 
*/ 
@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    jLabel1 = new javax.swing.JLabel(); 
    jLabel2 = new javax.swing.JLabel(); 
    jLabel3 = new javax.swing.JLabel(); 
    jPasswordField1 = new javax.swing.JPasswordField(); 
    jTextField1 = new javax.swing.JTextField(); 
    jComboBox1 = new javax.swing.JComboBox(); 
    jButton1 = new javax.swing.JButton(); 
    jButton2 = new javax.swing.JButton(); 

    jLabel1.setIcon(new javax.swing.ImageIcon("C:\\Users\\Daan\\Dropbox\\HvA\\Programming\\Corendon\\corendon.png")); // NOI18N 

    jLabel2.setText("Username"); 

    jLabel3.setText("Password"); 

    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dutch", "English" })); 

    jButton1.setText("Login"); 
    jButton1.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton1ActionPerformed(evt); 
     } 
    }); 

    jButton2.setText("Cancel"); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
    this.setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
       .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 
        .addGap(31, 31, 31) 
        .addComponent(jLabel1)) 
       .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 
        .addGap(45, 45, 45) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addComponent(jLabel2) 
         .addComponent(jLabel3) 
         .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGap(14, 14, 14) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(layout.createSequentialGroup() 
          .addGap(29, 29, 29) 
          .addComponent(jButton2) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
          .addComponent(jButton1)) 
         .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)))) 
      .addContainerGap(22, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap(16, Short.MAX_VALUE) 
      .addComponent(jLabel1) 
      .addGap(18, 18, 18) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(jLabel2) 
       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(jLabel3)) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(jButton2) 
       .addComponent(jButton1)) 
      .addGap(35, 35, 35)) 
    ); 
}// </editor-fold>       

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
}           

// Variables declaration - do not modify      
private javax.swing.JButton jButton1; 
private javax.swing.JButton jButton2; 
private javax.swing.JComboBox jComboBox1; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JLabel jLabel2; 
private javax.swing.JLabel jLabel3; 
private javax.swing.JPasswordField jPasswordField1; 
private javax.swing.JTextField jTextField1; 
// End of variables declaration     


} 

正如你可以看到我想要讓用戶在運行程序時顯示登錄窗口。但我目前正在處理的事實是,如果我將setVisible參數設置爲true,它實際上並不顯示。該計劃實際上只運行1秒而不是停止。

有什麼我在這裏做錯了嗎?在每個類中我們還沒有創建任何事件處理程序。他們只是窗戶上有多個組件。

+5

在這裏展示的代碼。不是從imgur。 –

+2

可以請你分享登錄類的代碼。 –

+1

附註。你可能想看看'JOptionPane'和'JDialog'(如果你已經覆蓋了它們)。 [本教程](http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html)可能會有所幫助。 –

回答

2

JPanel需要包裝在一個Window組件內,如JFrame顯示出來。

替換您showLogin方法有以下幾點:

Login login = new Login(); 

JFrame frame = new JFrame(); 
frame.add(login); 
frame.pack(); 
frame.setVisible(true);