我刚刚开始使用Java网络,我试图将我朋友的电脑连接到我的电脑并开始与我自己的界面聊天。
我遇到了问题,可能我错过了一些非常愚蠢的事情。无论如何,如果有人帮助我,我会很感激。 问题是当我打电话给' ServerSide s = new ServerSide(客户端)时,我的界面根本不显示;'我只是不知道为什么。
package prueba;
import java.net.*;
import java.io.*;
public class ServerSide implements Runnable
{
Thread t;
Socket client;
MCRPDI e1;
public ServerSide(Socket client)
{
this.client=client;
e1 = new MCRPDI();
e1.Interfaz.setBounds(100, 100, 800, 400);
e1.Interfaz.setVisible(true);
t=new Thread(this);
t.start();
}
public void run()
{
try
{
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
while(true)
{
String st1=br.readLine();
System.out.println("client: "+st1);
}
}
catch(IOException e)
{
System.out.println(e);
}
}
}
class serverchat
{
public static void main(String args[]) throws IOException
{
ServerSocket server=new ServerSocket(8080);
System.out.println("waiting for request from peer.....");
Socket client=server.accept();
ServerSide s=new ServerSide(client);
System.out.println("request accepted");
BufferedReader br2=new BufferedReader(new InputStreamReader(System.in));
PrintStream ps2=new PrintStream(client.getOutputStream());
while(true)
{
String st=br2.readLine();
ps2.println(st);
}
}
}
这是我的界面(只是构造函数和字段,我猜你需要的全部):
public class MCRPDI implements ActionListener {
private JLabel Error1Label, Error2Label, IPLabel,
EntradaMensajeSinCifrarLabel, DistincionLabel,
ClaveEncriptacionLabel, ClaveDesencriptacionLabel;
private JButton ConectarBtn, DesconectarBtn, EnviarBtn, DesencriptarBtn;
private JTextField TFIP, TFEntradaTextoAEncriptar,
TFEntradaTextoDesencriptar, TFEntradaClaveEncriptar,
TFEntradaClaveDesencriptar;
private Color blanco = new Color(245, 245, 245);
public JFrame Interfaz = new JFrame();
public MCRPDI() {
Interfaz.setLayout(null);
IPLabel = new JLabel("IP");
IPLabel.setBounds(95, 10, 200, 65);
Interfaz.add(IPLabel);
Error1Label = new JLabel("");
Error1Label.setBounds(560, 100, 200, 65);
Interfaz.add(Error1Label);
Error2Label = new JLabel("");
Error2Label.setBounds(510, 315, 200, 65);
Interfaz.add(Error2Label);
EntradaMensajeSinCifrarLabel = new JLabel("Mensaje");
EntradaMensajeSinCifrarLabel.setBounds(50, 140, 200, 65);
Interfaz.add(EntradaMensajeSinCifrarLabel);
ClaveEncriptacionLabel = new JLabel("Clave");
ClaveEncriptacionLabel.setBounds(360, 140, 200, 65);
Interfaz.add(ClaveEncriptacionLabel);
DistincionLabel = new JLabel(
"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////");
DistincionLabel.setBounds(60, 180, 800, 65);
Interfaz.add(DistincionLabel);
ClaveDesencriptacionLabel = new JLabel("Clave para Desencriptacion");
ClaveDesencriptacionLabel.setBounds(515, 205, 200, 65);
Interfaz.add(ClaveDesencriptacionLabel);
// /////////////////////////////////////////////////////
ConectarBtn = new JButton("Conectar");
ConectarBtn.setBounds(100, 80, 100, 30);
Interfaz.add(ConectarBtn);
ConectarBtn.addActionListener(this);
ConectarBtn.setBackground(blanco);
DesconectarBtn = new JButton("Desconectar");
DesconectarBtn.setBounds(200, 80, 110, 30);
Interfaz.add(DesconectarBtn);
DesconectarBtn.addActionListener(this);
DesconectarBtn.setBackground(blanco);
EnviarBtn = new JButton("Enviar");
EnviarBtn.setBounds(600, 155, 80, 30);
Interfaz.add(EnviarBtn);
EnviarBtn.addActionListener(this);
EnviarBtn.setBackground(blanco);
DesencriptarBtn = new JButton("Desencriptar");
DesencriptarBtn.setBounds(540, 295, 110, 40);
Interfaz.add(DesencriptarBtn);
DesencriptarBtn.addActionListener(this);
DesencriptarBtn.setBackground(blanco);
// //////////////////////////////////////////////////////
TFIP = new JTextField("");
TFIP.setBounds(130, 25, 150, 30);
TFIP.addActionListener(this);
Interfaz.add(TFIP);
TFEntradaTextoAEncriptar = new JTextField("");
TFEntradaTextoAEncriptar.setBounds(130, 155, 150, 30);
TFEntradaTextoAEncriptar.addActionListener(this);
Interfaz.add(TFEntradaTextoAEncriptar);
TFEntradaClaveDesencriptar = new JTextField("");
TFEntradaClaveDesencriptar.setBounds(520, 250, 150, 30);
TFEntradaClaveDesencriptar.addActionListener(this);
Interfaz.add(TFEntradaClaveDesencriptar);
TFEntradaClaveEncriptar = new JTextField("");
TFEntradaClaveEncriptar.setBounds(420, 155, 150, 30);
TFEntradaClaveEncriptar.addActionListener(this);
Interfaz.add(TFEntradaClaveEncriptar);
TFEntradaTextoDesencriptar = new JTextField("");
TFEntradaTextoDesencriptar.setBounds(130, 235, 350, 100);
TFEntradaTextoDesencriptar.addActionListener(this);
Interfaz.add(TFEntradaTextoDesencriptar);
}
提前致谢!
答案 0 :(得分:0)
在MCRPDI构造函数的末尾添加此行:
Interfaz.pack()
来源:http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html
也许你应该研究一下LayoutManagers。