Reputation: 177
I'm using the singleton pattern to build a class, however it does receive another singleton as parameter, it isn't working, is that really possible?
This is the entire project: https://github.com/raphaelbgr/SwingSocketClient/tree/master/src
package clientmain;
import gui.janelas.JanelaMain;
public class ClientMain {
public static int port = 0;
public static Thread receiver = null;
public static String ip = null;
public static String your_name = null;
public static void main(String[] args) {
JanelaMain jam = JanelaMain.getInstance(); //JanelaMain extends JFrame
jam.setLocationByPlatform(false);
}
This is it's singleton block.
//SINGLETON PATTERN BLOCK
private static JanelaMain jam;
public static JanelaMain getInstance() {
if (JanelaMain.jam == null) {
jam = new JanelaMain(JanelaSelectServer.getInstance()); //Another one passed by parameter
}
return jam;
}
The other class Singleton block:
//SINGLETON PATTERN BLOCK
private JanelaSelectServer() {} //JanelaSelectServer extends another JFrame
private static JanelaSelectServer jsv;
public static JanelaSelectServer getInstance() {
if (jsv == null) {
jsv = new JanelaSelectServer();
}
return jsv;
}
Shit happening (A Loop)
s.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
at gui.janelas.JanelaMain.getInstance(JanelaMain.java:144)
at gui.updatelogs.ConnectionLog.<init>(ConnectionLog.java:13)
at gui.updatelogs.ConnectionLog.getInstance(ConnectionLog.java:34)
at gui.janelas.JanelaMain.<init>(JanelaMain.java:37)
Thanks.
Upvotes: 0
Views: 671
Reputation: 727
Your code looks a bit strange, why giving a singelton to another? You can use the singelton class at the point where you need it and there is no need to give it to another class.
Upvotes: 3
Reputation: 1786
The problem is not about those classes but about ConnectionLog class. You are trying to create an instance in JanelaMain and ConnectionLog tries to creates an instance of JanelaMain.
@SuppressWarnings("serial")
public class JanelaMain extends JFrame {
private FlowLayout layout = new FlowLayout();
private JTextField jtxt_send = null;
//CUSTOM SWING COMPONENTS
private ConnectionLog cn_log = ConnectionLog.getInstance();
private TextLog msg_list = TextLog.getInstance();
@SuppressWarnings("serial")
public class ConnectionLog extends JTextField {
private JanelaMain jam = JanelaMain.getInstance();
Upvotes: 2