Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在执行操作之前完成主要功能?_Java_Swing_Jframe - Fatal编程技术网

Java 在执行操作之前完成主要功能?

Java 在执行操作之前完成主要功能?,java,swing,jframe,Java,Swing,Jframe,对于一个学校项目,我有两个不同的界面——一个登录界面和一个“选择”界面。 单击登录按钮时,我希望登录界面关闭,选择界面打开 我遇到的问题是,在调用ActionPerformed函数时,我的登录界面将变为null,即使它仍然显示在屏幕上,并且我仍然可以与它交互(?) 为什么lface甚至会变为空?我是JFrame的新手,因此任何帮助都将不胜感激 这是我的密码 import java.awt.event.ActionEvent; import java.awt.event.ActionListene

对于一个学校项目,我有两个不同的界面——一个登录界面和一个“选择”界面。 单击登录按钮时,我希望登录界面关闭,选择界面打开

我遇到的问题是,在调用ActionPerformed函数时,我的登录界面将变为null,即使它仍然显示在屏幕上,并且我仍然可以与它交互(?)

为什么lface甚至会变为空?我是JFrame的新手,因此任何帮助都将不胜感激

这是我的密码

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;

public class testmanager implements ActionListener {
    private SelectionsUserInterface sface;
    private SelectionData sdata = new SelectionData();
    private LoginUserInterface lface;

    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getActionCommand() == "Login") {
            System.out.println("login button");
            InitializeSelectionInterface();
            DeleteWindow(getLface());
        }

    }

    private void InitializeSelectionInterface() {
        sface = new SelectionsUserInterface(sdata);
    }

    private void DeleteWindow(JFrame window) {
        System.out.println(window);
    }

    public LoginUserInterface getLface() {
        return lface;
    }

    public void setLface(LoginUserInterface lface) {
        this.lface = lface;
    }

}
这是我的主要方法

public class testmain {

    public static void main(String[] args) {

        testmanager m = new testmanager();
        m.setLface(new LoginUserInterface());


    }

}


我真的不知道你想要完成什么,但是如果它在两个面板之间切换,你应该查看卡片布局。请参阅此处:什么是
登录接口
?我猜主界面永远不会被设置为可见,但不仅仅是猜测。。为了更快地获得更好的帮助,请添加或。您可以查看另一个(可能重复的)问题。这个问题可能看起来不相似(或者看起来是这样),但解决方案与您所寻找的类似。碰巧我两天前在上面贴了一个答案。它使用两种方法:(1)更改
JFrame
的内容窗格;(2)使用
CardLayout
。在每种情况下,只需单击按钮即可切换到下一个面板。根据您的标题,是的,主功能在用户看到第一个JFrame之前就完成了。JavaSwing是事件驱动的。后续代码需要在登录按钮ActionListener中执行。