繁体   English   中英

如何在IntellijIDEA中从.form使Java单例?

[英]How to make Java singleton from .form in IntellijIDEA?

问题是要从IntellijIDEA中绑定到.form的Java类制作单例。

SSCCE:我们需要使用IDEA工具“ UI Designer”创建一个swing GUI,并使其成为Singleton。

我们已经有一个绑定到类ServerFace.java的ServerFace.form。我们还有一个类Index.java,它对ServerFace进行了首次初始化。

请参阅下面两个类的代码(ServerFace.form中没有代码):

ServerFace.java(类绑定到ServerFace.form):

import javax.swing.*;
public class ServerFace {
    private JPanel panel1;
    private JButton startServerButton;
    private JButton stopServerButton;
    private JButton clearLogButton;
    private JTextArea textArea1;

//Make it Singleton--------------------------------------
    private static volatile ServerFace instance;

    public static ServerFace getInstance(){

        if (instance==null){
            synchronized (ServerFace.class){
                if(instance==null){
                    try{
                        instance=new ServerFace();
                    }catch (Exception e){
                        System.out.println("failed to create UI: "+e+"  |  "+e.getMessage());
                    }
                }
            }
        }
        return  instance;
    }

    private ServerFace() throws Exception{

    }
    private void createUIComponents() {
        // TODO: place custom component creation code here
    }
}

Index.java(获取ServerFace.java实例的类):

import javax.swing.*;

public class Index{

    private static ServerFace _gui;

    public static void main(String[] args){
        _gui = ServerFace.getInstance();
    }
}

当我尝试编译时,它将引发异常“无法创建UI:java.lang.NullPointerException | null”

我做错了什么以及如何正确解决?

我终于找到了解决方案。 问题是我的一个组件(panel1)具有“ custom create”标志,但是我没有在createUIComponents()中提供任何代码。 删除标记后,它开始工作。

PS:感谢IDEA社区的Dmitry Jemerov。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM