Я хочу реализовать сетевые функции в моей игре, однако у меня есть большая проблема.Когда я пытаюсь создать компонент JFrame, после выполнения сетевого кода он всегда отображается в виде белого экрана.Пока работает сеть, я никак не мог заставить работать интерфейс.Вот сетевой код:
package progtech2bea;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class NetworkController implements Runnable {
public Main base;
private MainMenu mm;
private String ip;
private int port = 22222;
public int pnum;
private Thread thread;
private Socket socket;
private DataOutputStream os;
private DataInputStream is;
private ServerSocket serversocket;
private int errcount = 0;
private boolean commerror;
private boolean client;
private boolean accepted = false;
public void beginServer(String ip, MainMenu mm)
{
this.ip = ip;
this.mm = mm;
if (!connect()) {
initalizeServer();
pnum = 1;
}
else
{
pnum = 2;
}
thread = new Thread(this, "WaterWar");
thread.run();
}
@Override
public void run() {
while (true) {
tick();
//m.repaint();
if (!client && !accepted) {
listenServerRequest();
}
}
}
private boolean connect() {
try {
socket = new Socket(ip, port);
os = new DataOutputStream(socket.getOutputStream());
is = new DataInputStream(socket.getInputStream());
accepted = true;
mm.dispose();
base.showMain();
base.moveToP2StartView();
System.out.println("Successfully connected");
} catch (IOException e) {
System.out.println("No active server, initalizing new one");
return false;
}
return true;
}
private void initalizeServer() {
try {
serversocket = new ServerSocket(port, 8, InetAddress.getByName(ip));
} catch (Exception e) {
System.out.println("Error initalizing the server");
}
client = false;
}
public void listenServerRequest() {
Socket s = null;
try {
s = serversocket.accept();
os = new DataOutputStream(s.getOutputStream());
is = new DataInputStream(s.getInputStream());
accepted = true;
System.out.println("The client successfully connected");
base.showMain();
mm.dispose();
} catch (IOException e) {
System.out.println("Error");
}
}
public void tick() {
}
}
jFrame работает отлично, если сетевой код не работал.Не работает следующее, которое вызывается в отдельном классе:
//the jFrame component initalizing all the UI elements inside
Main m = new Main(jTextField1.getText(),jComboBox1.getSelectedIndex());
//calls the NetworkController's beginServer() method, trying to establish
//connection/start a server
nc.beginServer(jTextField2.getText(),this);
В чем проблема?