[英]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.