Java接口问题

时间:2015-02-26 16:33:56

标签: java interface network-programming

我刚刚开始使用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);




    } 

提前致谢!

1 个答案:

答案 0 :(得分:0)

在MCRPDI构造函数的末尾添加此行:

Interfaz.pack()

来源:http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html

也许你应该研究一下LayoutManagers。