2010-11-24 119 views
9

我正在創建一個程序來跟蹤DVD的列表。在主頁上我設置了2個JButton。當用戶點擊一個新的DVD時,一個來自另一個類的新JFrame會出現字段以輸入有關新DVD的信息。我試圖在第二個框架上做一個取消按鈕,這樣當你點擊取消按鈕時,它將恢復主GUI並關閉新的條目GUI。代碼如下,我不知道如何去做。如何在不關閉主程序的情況下關閉jframe

主要GUI頁面

package dvdlibrary; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 


public class bootPage extends javax.swing.JFrame { 

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



    @SuppressWarnings("unchecked") 

    private void initComponents() { 

     jLabel1 = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 

     jLabel1.setText("DVD Library"); 
     getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(168, 11, -1, -1)); 

     jLabel2.setText("What would you like to do today?"); 
     getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(113, 70, -1, -1)); 

     jButton1.setText("Create Record"); 
     jButton1.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       jButton1MouseClicked(evt); 
      } 
     }); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 
     getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 135, -1, -1)); 

     jButton2.setText("View Library"); 
     jButton2.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       jButton2MouseClicked(evt); 
      } 
     }); 
     getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(224, 135, 111, -1)); 

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

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           




    }           

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {          
     if(evt.getSource()== jButton1) 
      dvdlibrary.createEntry.createE(); 


    }          

    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {          
     if(evt.getSource()== jButton2) 
      dvdlibrary.movieChooser.movChoo(); 
    }          


    public static void bootP() { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new bootPage().setVisible(true); 
       new bootPage().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 


} 

創建詞條頁面

package dvdlibrary; 

public class createEntry extends javax.swing.JFrame { 


    public createEntry() { 
     initComponents(); 
    } 


    @SuppressWarnings("unchecked") 

    private void initComponents() { 

     jLabel1 = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jLabel4 = new javax.swing.JLabel(); 
     jLabel5 = new javax.swing.JLabel(); 
     jLabel6 = new javax.swing.JLabel(); 
     jTextField1 = new javax.swing.JTextField(); 
     jComboBox1 = new javax.swing.JComboBox(); 
     jTextField2 = new javax.swing.JTextField(); 
     jTextField3 = new javax.swing.JTextField(); 
     jTextField4 = new javax.swing.JTextField(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTextArea1 = new javax.swing.JTextArea(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 
     jButton3 = new javax.swing.JButton(); 
     jButton4 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jLabel1.setText("Title"); 

     jLabel2.setText("Genre"); 

     jLabel3.setText("Length"); 

     jLabel4.setText("Rating"); 

     jLabel5.setText("Description"); 

     jLabel6.setText("Year"); 

     jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); 

     jTextArea1.setColumns(20); 
     jTextArea1.setRows(5); 
     jScrollPane1.setViewportView(jTextArea1); 

     jButton1.setText("Input"); 

     jButton2.setText("Load"); 

     jButton3.setText("Save"); 

     jButton4.setText("Cancel"); 
     jButton4.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       jButton4MouseClicked(evt); 
      } 
     }); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createSequentialGroup() 
         .addGap(19, 19, 19) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addComponent(jLabel5) 
          .addGroup(layout.createSequentialGroup() 
           .addComponent(jLabel2) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
           .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
          .addGroup(layout.createSequentialGroup() 
           .addComponent(jLabel1) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
           .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 174, Short.MAX_VALUE)) 
          .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
           .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
            .addComponent(jLabel3) 
            .addComponent(jLabel4) 
            .addComponent(jLabel6)) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE) 
           .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
            .addComponent(jTextField2) 
            .addComponent(jTextField4) 
            .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 133, Short.MAX_VALUE))))) 
        .addGroup(layout.createSequentialGroup() 
         .addGap(51, 51, 51) 
         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createSequentialGroup() 
         .addGap(124, 124, 124) 
         .addComponent(jButton1)) 
        .addGroup(layout.createSequentialGroup() 
         .addGap(45, 45, 45) 
         .addComponent(jButton4) 
         .addGap(18, 18, 18) 
         .addComponent(jButton2) 
         .addGap(18, 18, 18) 
         .addComponent(jButton3))) 
       .addGap(23, 23, 23)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(38, 38, 38) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel1) 
        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(jButton1)) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
        .addGroup(layout.createSequentialGroup() 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jLabel2) 
          .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
         .addGap(26, 26, 26) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jLabel6) 
          .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
         .addGap(29, 29, 29) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jLabel3) 
          .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
         .addGap(37, 37, 37) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jLabel4) 
          .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
         .addGap(39, 39, 39) 
         .addComponent(jLabel5) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton3) 
         .addComponent(jButton2) 
         .addComponent(jButton4))) 
       .addContainerGap()) 
     ); 

     pack(); 
    }      

    private void jButton4MouseClicked(java.awt.event.MouseEvent evt) {          


    }          


    public static void createE() { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new createEntry().setVisible(true); 

      } 
     }); 
    } 


    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JButton jButton3; 
    private javax.swing.JButton jButton4; 
    private javax.swing.JComboBox jComboBox1; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLabel jLabel5; 
    private javax.swing.JLabel jLabel6; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTextArea jTextArea1; 
    private javax.swing.JTextField jTextField1; 
    private javax.swing.JTextField jTextField2; 
    private javax.swing.JTextField jTextField3; 
    private javax.swing.JTextField jTextField4; 
    // End of variables declaration     

} 

回答

2
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE) 
+1

好吧,我改變了在框架SETT但現在我根本無法關閉窗戶。我可以使用哪些編碼,以便取消按鈕關閉窗口。 SUDO if actionperformed ==取消按鈕 Jframe.createEntry.Close 或類似的東西 – Jon 2010-11-24 16:11:04

+0

frame.setVisible(false); frame.dispose() – dacwe 2010-11-25 12:21:47

14

我想你也可以使用DISPOSE_ON_CLOSE

DISPOSE_ON_CLOSE(默認爲 的JInternalFrame)

當用戶關閉窗口時隱藏和處置窗口。這會從屏幕上刪除 窗口並釋放它使用的任何資源。

6

您是否閱讀了API以查找setDefaultCloseOperation(...)方法的其他值?

您可以使用:

DISPOSE_ON_CLOSE - 框架將關閉。如果這是應用程序的最後一個開放框架,那麼JVM也將終止。

HIDE_ON_CLOSE - 該框架剛設置爲不可見。

當用戶點擊一個說新的從另一個類的新的jframe與字段輸入字段輸入有關新的DVD的信息。

程序的真正問題在於,您正在使用框架作爲彈出窗口。你應該使用一個模態的JDialog。應用程序應該只有一個具有多個對話框的JFrame才能收集其他信息。一個JDialog不允許你使用EXIT_ON_CLOSE。

1

我有一個類似的問題,並使用jFrameInstanceVariable.setVisible(false);作爲我打我的取消按鈕時發生的行爲。但每次我點擊彈出JFrame的按鈕後,除了按下按鈕創建的新內容之外,所有舊內容仍然存在。

我通過每次按下彈出JFrame的按鈕時創建一個新的JFrame實例來解決這個問題。

1

隱藏沒有實際關閉程序窗口,這樣做:

f.setVisible(false); 
1

如果是這樣的話,一定要在初始化時,不setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)在您的JFrame使用setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);;當最後的JFrame 關閉

  • DISPOSE_ON_CLOSE將終止您的應用程序。只要JFrame關閉, EXIT_ON_CLOSE就會終止您的應用程序。即使所有JFrames都隱藏,HIDE_ON_CLOSE(默認)也不會終止 您的應用程序。
1

如果你只是隱藏程序,用HIDE_ON_CLOSEset.Visible(false),這不是一個很好的選擇,因爲如果你做的東西有更多的幀時,隱藏幀將仍在運行,減慢計算機的性能。如果您使用按鈕就像我覺得

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
0

:順便說一下,其他人所說,是不是使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,這將終止程序,當你點擊「X,關閉所有的幀,請使用以下你說你是

this.dispose(); 

會做的伎倆..

0

嘗試把this.dispose();取消按鈕方法內。

相關問題