2012-11-08 36 views
2

有沒有什麼辦法可以在不退出整個應用程序的情況下使用「取消」按鈕關閉框架。 我試圖按照有什麼辦法可以在不使用Cancel jButton退出整個應用程序的情況下關閉JFrame?

setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE); 

上面一行當我按下X關閉按鈕關閉框架只能以備不時之需。有沒有實現一個JButton來執行相同的操作

import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 


public class CloseTestForm extends JFrame { 

    private JPanel contentPane; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        CloseTestForm frame = new CloseTestForm(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public CloseTestForm() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 300); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     JButton btnSave = new JButton("Save"); 
     btnSave.setBounds(64, 141, 89, 23); 
     contentPane.add(btnSave); 

     JButton btnCancel = new JButton("Cancel"); 
     btnCancel.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 

       //?? 
      } 
     }); 
     btnCancel.setBounds(64, 192, 89, 23); 
     contentPane.add(btnCancel); 
    } 
} 
+0

請參閱[使用多個JFrames,良好/錯誤的實踐?](http://stackoverflow.com/a/9554657/418556) –

回答

3

使用任何的setDefaultCloseOperation除外EXIT_ON_CLOSE任何其他的好辦法。

然後,對於取消按鈕,只需dispose()窗口。如果應用程序有另一個正在運行的線程,它將不會退出。您也可以致電setVisible(false)隱藏窗口。

1

致電Window.dispose()擺脫框架。

你必須添加按鈕並在按鈕上添加一個actionListener。然後在該動作偵聽器的actionPerformed方法中,在要刪除的幀上調用.dispose()方法。

+0

dispose爲我工作謝謝Alot .... – user1809580

1
  • 不延伸JFrame,創建本地變量

  • 那麼你可以調用myFrame.setVisible(false)

  • 以這種形式(代碼貼在這裏)當前JVM永遠不會過期,直到PC重新啓動或關閉

  • 不創建第二個或更多JFrame s,使用JDialog代替

相關問題