2012-11-07 36 views
0

我想隱藏一個框架,一旦點擊一個按鈕。 「註冊」按鈕應該打開一個框架,用戶可以註冊,這是可行的,但我想隱藏前一幀,我不知道如何去做。隱藏一個框架在java中的按鈕點擊

這裏是我的代碼:

MainPage.java

package Practice_1; 
import java.awt.*; 
import java.awt.Insets; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 
/** 
* 
* @author Ivan 
*/ 
public class MainPage extends JPanel 
{ 
    JButton regButton, logButton, listButton; 
    JLabel homeMessage; 
    GridBagConstraints gbc = new GridBagConstraints(); 

    public MainPage() 
    { 
     setLayout(new GridBagLayout()); 

     gbc.insets = new Insets(5,5,5,5); 

     homeMessage = new JLabel("Please select an option below:"); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     add(homeMessage, gbc); 

     regButton = new JButton("Register"); 
     gbc.gridx = 0; 
     gbc.gridy = 1; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 

     regButton.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent e) 
      { 
       //Execute when button is pressed 
       //System.out.println("clicked"); 
       RegisterPage regFrame = new RegisterPage(); 

       JFrame register = new JFrame(); 
       register.setTitle("Registration"); 
       register.setSize(300,200); 
       register.setVisible(true); 
       register.add(regFrame); 
       new MainPage().setVisible(false);/THIS DOES NOT WORK 

      } 
     }); 
     add(regButton, gbc); 

     logButton = new JButton("Log in"); 
     gbc.ipadx = 40; 
     gbc.gridx = 0; 
     gbc.gridy = 2; 
     add(logButton, gbc); 

     listButton = new JButton("Customer list"); 
     gbc.ipadx = 40; 
     gbc.gridx = 0; 
     gbc.gridy = 3; 
     add(listButton, gbc); 

     JFrame home = new JFrame(); 

     home.setTitle("Main menu"); 
     home.setSize(300,200); 
     home.setResizable(false); 
     home.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     home.setVisible(true); 
     home.add (mainFrame); 


    } 




    public static void main(String[] args) { 
     // TODO code application logic here 
     MainPage mainFrame = new MainPage(); 





    } 
} 

RegisterPage.java

package Practice_1; 

import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Insets; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

/** 
* 
* @author Ivan 
*/ 
public class RegisterPage extends JPanel { 


    //JButton regButton, logButton, listButton; 
    JLabel homeMessage; 
    GridBagConstraints gbc = new GridBagConstraints(); 

    public RegisterPage() 
    { 
     setLayout(new GridBagLayout()); 

     gbc.insets = new Insets(5,5,5,5); 

     homeMessage = new JLabel("Register new user:"); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     add(homeMessage, gbc); 


    } 

} 
+3

這再一次出現的時間和時間。不要使用其他JFrame。讓對話窗口成爲一個JDialog。 –

+0

有關更多信息,請參見[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/a/9554657/418556)。關於@HovercraftFullOfEels引用的問題。 –

回答

6

Acording到你的代碼試圖隱藏JPanel而不是JFrame。我的建議是使用

public class MainPage extends JFrame 

比實例化JPanel這樣的:

JPanel panel = new JPanel(); 

,並於面板上的添加成分。要隱藏你的,你的MainPage可以撥打:

this.setVisible(false); 

但如果你使用它會更好:

this.dispose(); 
+0

我不能夠使用 '這個' 內部' \t \t closeButton.addActionListener(新的ActionListener(){ \t \t \t \t \t \t @覆蓋 \t \t \t公共無效的actionPerformed(ActionEvent的爲arg0){ \t \t \t \t // TODO自動生成方法存根 \t \t \t \t //System.exit(0); \t \t \t \t \t \t \t} \t \t});' – user3153014

+1

@ user3153014這樣使用它:'MainPane.this' –

相關問題