面向客户端的java swing

面向客户端的java swing,java,swing,sockets,Java,Swing,Sockets,嗨,朋友们,我正在用JavaSwing创建一个网吧管理软件,我想退出一个java软件(swing中的欢迎窗口)从服务器在客户端计算机上。我有此代码,但它不工作。当客户端运行程序时,swing窗口不可见。我可以从服务器关闭它,但我想要的是,当客户端编译并运行代码时,swing窗口应可见,当我从服务器发出close命令时,swing窗口应关闭。是否可能 import java.net.*; import java.io.*; public class cl extends javax.sw

嗨,朋友们,我正在用JavaSwing创建一个网吧管理软件,我想退出一个java软件(swing中的欢迎窗口)从服务器在客户端计算机上。我有此代码,但它不工作。当客户端运行程序时,swing窗口不可见。我可以从服务器关闭它,但我想要的是,当客户端编译并运行代码时,swing窗口应可见,当我从服务器发出close命令时,swing窗口应关闭。是否可能

    import java.net.*;
import java.io.*;

public class cl extends javax.swing.JFrame {

    /** Creates new form cl */
    public cl() {


    initComponents();
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel5 = new javax.swing.JLabel();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setBackground(new java.awt.Color(255, 204, 204));

    jPanel1.setBackground(new java.awt.Color(255, 204, 204));

    jLabel5.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\new-1.jpg")); // NOI18N

    jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
    jLabel1.setText("Welcome to our cafe");

    jLabel2.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
    jLabel2.setText("Contact Administrator to start your session");

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jLabel5)
            .addGroup(jPanel1Layout.createParallelGroup
   (javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(92, 92, 92)
                    .addComponent(jLabel1))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(42, 42, 42)
                    .addComponent(jLabel2)))
            .addContainerGap(872, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel1Layout.createSequentialGroup()
            .addGroup(jPanel1Layout.createParallelGroup
(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jLabel5))
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(32, 32, 32)
                    .addComponent(jLabel1)
                    .addGap(18, 18, 18)
                    .addComponent(jLabel2)))
            .addContainerGap(597, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 
         javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,  
       javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)      


    );

    pack();
}// </editor-fold>

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {


try
    {

    String s1,s2;
    Socket s=new Socket("192.168.1.2",1024);
                  DataInputStream dis=new DataInputStream(s.getInputStream());
    DataOutputStream dos=new DataOutputStream(s.getOutputStream());
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

    while(true)
    {



s1=dis.readUTF();

if (s1.equals("5"))
{
System.exit(0);
}
    }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
// End of variables declaration
import java.net.*;
导入java.io.*;
公共类cl扩展了javax.swing.JFrame{
/**创建新的表格cl*/
公共cl(){
初始化组件();
}
/**此方法从构造函数中调用,以
*初始化表单。
*警告:请勿修改此代码。此方法的内容为
*始终由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
// 
私有组件(){
jPanel1=newjavax.swing.JPanel();
jLabel5=newjavax.swing.JLabel();
jLabel1=newjavax.swing.JLabel();
jLabel2=newjavax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
挫折背景(新java.awt.Color(255、204、204));
setBackground(新java.awt.Color(255204204));
jLabel5.setIcon(新的javax.swing.ImageIcon(“C:\\Users\\Administrator\\Desktop\\new-1.jpg”);//NOI18N
jLabel1.setFont(新的java.awt.Font(“Tahoma”,1,18));//NOI18N
jLabel1.setText(“欢迎来到我们的咖啡馆”);
jLabel2.setFont(新的java.awt.Font(“Arial”,1,14));//NOI18N
jLabel2.setText(“联系管理员以启动会话”);
javax.swing.GroupLayout jPanel1Layout=新的javax.swing.GroupLayout(jPanel1);
setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel5)
.addGroup(jPanel1Layout.createParallelGroup
(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addGap(92,92,92)
.addComponent(jLabel1))
.addGroup(jpanellayout.createSequentialGroup()
.addGap(42,42,42)
.addComponent(jLabel2)))
.addContainerGap(872,简称最大值))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup
(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel5))
.addGroup(jpanellayout.createSequentialGroup()
.addGap(32,32,32)
.addComponent(jLabel1)
.addGap(18,18,18)
.addComponent(jLabel2)))
.addContainerGap(597,简称最大值))
);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1、javax.swing.GroupLayout.DEFAULT_SIZE、,
javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u值)
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1、javax.swing.GroupLayout.DEFAULT_SIZE、,
javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u值)
);
包装();
}// 
/**
*@param指定命令行参数
*/
公共静态void main(字符串参数[]){
尝试
{
字符串s1、s2;
插座s=新插座(“192.168.1.2”,1024);
DataInputStream dis=新的DataInputStream(s.getInputStream());
DataOutputStream dos=新的DataOutputStream(s.getOutputStream());
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
while(true)
{
s1=dis.readUTF();
如果(s1等于(“5”))
{
系统出口(0);
}
}
}
捕获(例外e)
{
e、 printStackTrace();
}
}
//变量声明-不修改
私有javax.swing.JLabel jLabel1;
私有javax.swing.JLabel jLabel2;
私有javax.swing.JLabel jLabel5;
私有javax.swing.JPanel jPanel1;
//变量结束声明

}请不要回答您的问题

1) 不要使用从NetBeans生成的代码,请使用

2) 查找正确的,因为难以管理由
GroupLayout


3) 将
Socket
重定向到后台任务,请使用,否则GUI将冻结到最后一次结束

可能不是您问题的答案,请

1) 不要使用从NetBeans生成的代码,请使用

2) 查找正确的,因为难以管理由
GroupLayout


3) 将
Socket
重定向到后台任务,使用,否则GUI将冻结,直到最后一次结束

问题是您从未在main()方法中创建帧

将此代码添加到主方法:

public static void main(String args[]) {
    cl frame = new cl();
    cl.setSize(640,480);
    cl.setVisible(true);
    // rest of code follows...
然后会出现框架

您可能还需要调查是否希望用户能够关闭框架,以及


我也建议你考虑使用而不是你自己的协议。RMI可能会为您提供更多的功能/功能,而无需手动编写网络代码。RMI还意味着您不需要在单独的线程中运行侦听:RMI将为您处理此问题。

问题在于您从未在main()方法中创建帧

将此代码添加到主方法:

public static void main(String args[]) {
    cl frame = new cl();
    cl.setSize(640,480);
    cl.setVisible(true);
    // rest of code follows...
然后会出现框架

您可能还需要调查是否需要该用户