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