我想在我的游戏中实现网络功能,但是我有一个很大的问题。当我尝试创建 JFrame 组件时,在执行网络代码后,它总是显示为白屏。虽然网络工作正常,但我无法让 UI 以任何方式工作。这是网络代码: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();}@Overridepublic 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;}如果网络代码没有运行,jFrame 工作得非常好。以下不起作用,它在单独的类中被调用://the jFrame component initalizing all the UI elements insideMain m = new Main(jTextField1.getText(),jComboBox1.getSelectedIndex());//calls the NetworkController's beginServer() method, trying to establish //connection/start a servernc.beginServer(jTextField2.getText(),this);有什么问题?
1 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
弄清楚了。必须在这个可运行对象之外进行线程初始化,然后将其运行为:
Thread t = new Thread(new Runnable() {...});
t.start();添加回答
举报
0/150
提交
取消
