Java Run方法永远不会被执行

Java Run方法永远不会被执行,java,chat,Java,Chat,我目前正试图为该公司开发一个简单的局域网聊天功能。但我被困在这一点上,run方法从未在以前工作正常的客户机中执行过。它开始不工作后,我重新构造的构造函数,以能够处置和可见的框架上的系统托盘图标双击。请告诉我哪里出了问题。我将代码发送给您,它以前在哪里工作,现在在哪里不工作。如果需要,我还可以发送服务器接口源代码和其他代码 结构化之前(ChatClient.java) 重组后(ChatClient.java) Login.java import java.awt.*; import javax.s

我目前正试图为该公司开发一个简单的局域网聊天功能。但我被困在这一点上,run方法从未在以前工作正常的客户机中执行过。它开始不工作后,我重新构造的构造函数,以能够处置和可见的框架上的系统托盘图标双击。请告诉我哪里出了问题。我将代码发送给您,它以前在哪里工作,现在在哪里不工作。如果需要,我还可以发送服务器接口源代码和其他代码

结构化之前(ChatClient.java)

重组后(ChatClient.java)

Login.java

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.net.InetAddress;
import java.net.UnknownHostException;

final class Login {

    JFrame frame;
    JPanel panel;
    JLabel label_1, label_2, label_3, label_4;
    JTextField field_1, field_2;
    JPasswordField pass;
    JButton button_1, button_2;
    Font Default = new Font("Comic Sans MS", Font.PLAIN, 12);
    Font notify = new Font("Comic Sans MS", Font.BOLD, 12);
    Font small = new Font("Sans Serif", Font.ITALIC, 3);
    //String IP;
    Socket client;
    InetAddress ipaddr;
    String hostname;

    PrintStream toServer;

    ChatClient clientObj;

    public String gethostString(){
        try {
            ipaddr = InetAddress.getLocalHost();
            hostname = ipaddr.getHostName();
        }
        catch (UnknownHostException e) {
        }
        return hostname;
    }

    @SuppressWarnings("CallToPrintStackTrace")
    Login() {
        String IP = "192.168.10.88";
        try {
            ipaddr = InetAddress.getLocalHost();
            hostname = ipaddr.getHostName();
            clientObj = new ChatClient(gethostString(), IP, this);
//            clientObj.createAndShowGUI(hostname);
//            clientObj.createAndShowUI();

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        Image bd = Toolkit.getDefaultToolkit().getImage("Image/login.png");
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
        }
    }
}
这是我的createAndShowUI方法

public void createAndShowUI(String name) {
        this.name = name;
        JFrame frame;
        frame = new JFrame("Client - " + name);
        Image bd = Toolkit.getDefaultToolkit().getImage("Resources/Image/client.png");
        frame.setIconImage(bd);
        frame.getContentPane().add(new ChatClient().mainPanel); >> I call the constructor here to draw the frame.
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        frame.setSize(600, 400);
        frame.setResizable(false);
//        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public JComponent getComponent() {
        return mainPanel;
    }

任何帮助都将不胜感激。干杯

您创建了第二个无参数构造函数,没有人调用第二个构造函数。但是,您将启动线程的代码移到了第二个构造函数中,因此现在不再启动线程()


也许您想调用此方法
public void init(){
而不是
public ChatClient(){
,然后在第一个有3个参数的构造函数末尾调用
init();

login类在哪里,以及在login()构造函数中执行的操作。因此,您必须在login()中启动线程对于运行的执行。好的,我已经添加了login.java。我在它的构造函数中调用ChatClient对象。我将尝试上载服务器和运行它所需的其他类。无论如何感谢您的回复。干杯!我正试图与大家共享服务器源代码,但第一篇帖子不允许我发布超过30000个字符字符。服务器和其他类还需要5000个字符。我们有其他选项或方法共享它吗?提前谢谢。您尝试过使用调试器单步执行代码吗?亲爱的Bolwidt,非常感谢您的快速响应。我尝试过首先将run方法放在3参数构造函数中,甚至是main方法中但是运气不好。我已经按照你的建议尝试了,它实际上解决了这个问题!现在执行Run方法。但是另一个问题是,现在我的框架运行不好,我实际上创建了一个方法来绘制框架,因为我需要在系统托盘图标上双击它,正如我在下面提到的。我想与你分享这个片段。希望我仍然可以我在第一篇文章中发布了这个片段。请帮帮我。再次感谢你!你是我的天使。@RaymondNatio如果这解决了问题,那么你应该接受答案。如果你发现了新问题,你应该先尝试自己解决,否则就发布一个新问题。好的@Markrottveel谢谢你的建议。我会先尝试解决它如果运气不好,我将在明天下午之前发布一个新问题。再次感谢。干杯。
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.net.InetAddress;
import java.net.UnknownHostException;

final class Login {

    JFrame frame;
    JPanel panel;
    JLabel label_1, label_2, label_3, label_4;
    JTextField field_1, field_2;
    JPasswordField pass;
    JButton button_1, button_2;
    Font Default = new Font("Comic Sans MS", Font.PLAIN, 12);
    Font notify = new Font("Comic Sans MS", Font.BOLD, 12);
    Font small = new Font("Sans Serif", Font.ITALIC, 3);
    //String IP;
    Socket client;
    InetAddress ipaddr;
    String hostname;

    PrintStream toServer;

    ChatClient clientObj;

    public String gethostString(){
        try {
            ipaddr = InetAddress.getLocalHost();
            hostname = ipaddr.getHostName();
        }
        catch (UnknownHostException e) {
        }
        return hostname;
    }

    @SuppressWarnings("CallToPrintStackTrace")
    Login() {
        String IP = "192.168.10.88";
        try {
            ipaddr = InetAddress.getLocalHost();
            hostname = ipaddr.getHostName();
            clientObj = new ChatClient(gethostString(), IP, this);
//            clientObj.createAndShowGUI(hostname);
//            clientObj.createAndShowUI();

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        Image bd = Toolkit.getDefaultToolkit().getImage("Image/login.png");
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
        }
    }
}
public void createAndShowUI(String name) {
        this.name = name;
        JFrame frame;
        frame = new JFrame("Client - " + name);
        Image bd = Toolkit.getDefaultToolkit().getImage("Resources/Image/client.png");
        frame.setIconImage(bd);
        frame.getContentPane().add(new ChatClient().mainPanel); >> I call the constructor here to draw the frame.
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        frame.setSize(600, 400);
        frame.setResizable(false);
//        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public JComponent getComponent() {
        return mainPanel;
    }