2016-08-11 50 views
-2

在我的项目,我想通过点击​​从WelcomeFrame打开LoginFrame开口的框架WelcomeFrame to be closed as well. I have successfully opened the LoginFrame by using调用setVisible(真). To close the WelcomeFrame I have written frame.SetVisible(假)where frame is the object of WelcomeFrame`但此行显示了错误:框架无法解决....通过点击按钮

这里是我的代码..请帮助

public class WelcomeFrame extends JFrame{ 

    private JPanel contentPane; 

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



JButton btnNewButton = new JButton("Librarian Portal\r\n"); 
btnNewButton.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
LoginFrame l=new LoginFrame(); 
l.setVisible(true); 
frame.setVisible(false); //error:frame cannot be resolved 
    } 
     }); 
+1

尝试this.setVisible(false)而不是frame.setVisible(false) –

+0

我已经尝试this.setVisible(false),但它会导致错误:方法setVisible(boolean)是未定义的类型new actionListener(){} @ LasithaYapa – SanjotKaur

+0

尝试WelcomeFrame.this.setVisible(); – beeb

回答

0

因为WelcomeFrame的对象是不可访问。

您需要在尝试调用setVisible方法之前创建另一个对象。

WelcomeFrame closing_frame = new WelcomeFrame(); 
closing_frame.setVisible(false); 
0

公共类WelcomeFrame扩展的JFrame {

private JPanel contentPane; 
private WelcomeFrame frame; 

EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       frame = new WelcomeFrame(); 

我认为它会帮助你

+0

感谢您的帮助...它为我工作,但要实现这一点,我必须使框架对象静态,因为我已经实例化框架对象在主类是一个静态class.But我没有理由声明它静态@ Hayk Petrosyan – SanjotKaur

+0

如果你声明它像静态它会工作,所以我认为这是很好的理由 –

0

一个CardLayout更适合您的需求;总的想法是创建一个jPanel而不是一个JFrame,CardLayout允许你一次只显示一个。如果这是你需要的have alook here