Java 摆动输出不';我第一次跑步时没有出现

Java 摆动输出不';我第一次跑步时没有出现,java,swing,netbeans,Java,Swing,Netbeans,我正在尝试使用swing-in-netbeans执行一个简单的客户机-服务器通信。第一次运行时,它显示一个空白窗口。我在没有关闭第一个输出窗口的情况下再次运行它,它显示了所需的输出。我正在附上密码 谢谢 import java.io.*; import java.net.*; public class serverg extends javax.swing.JFrame { ServerSocket ss; Socket s; BufferedReader in; PrintWriter o

我正在尝试使用swing-in-netbeans执行一个简单的客户机-服务器通信。第一次运行时,它显示一个空白窗口。我在没有关闭第一个输出窗口的情况下再次运行它,它显示了所需的输出。我正在附上密码

谢谢

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

public class serverg extends javax.swing.JFrame {

ServerSocket ss;
Socket s;
BufferedReader in;
PrintWriter out;

public serverg() {
    initComponents();       
}

 void work() {
    try {

        String line;
        ss = new ServerSocket(3500);
        s=new Socket();
        jTextArea1.append("waiting for connection");
        s=ss.accept();
        in = new BufferedReader(new InputStreamReader(s.getInputStream()));
        out = new PrintWriter(s.getOutputStream());
        out.print("connection established");
        if((line=in.readLine())!=null)
        jTextArea1.append("Client : " + line );

    } catch (IOException r) {
    }

}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();
    jTextField1 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();
    jLabel1 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setName("Form"); // NOI18N

    jScrollPane1.setName("jScrollPane1"); // NOI18N

    /*try{
        jTextArea1.setEditable(false);
        //s=new Socket();
        jTextArea1.append("waiting for client..." );
        s=ss.accept();
        String line=in.readLine();
        jTextArea1.append("Client : " + line );
    }
    catch(IOException r){}*/
    jTextArea1.setColumns(20);
    jTextArea1.setRows(5);
    jTextArea1.setName("jTextArea1"); // NOI18N
    jScrollPane1.setViewportView(jTextArea1);

    jTextField1.setName("jTextField1"); // NOI18N

    org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(desktopapplication1.DesktopApplication1.class).getContext().getResourceMap(serverg.class);
    jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
    jButton1.setName("jButton1"); // NOI18N
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    jLabel1.setName("jLabel1"); // NOI18N

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
                .addGroup(layout.createSequentialGroup()
                    .addGap(10, 10, 10)
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(98, 98, 98)
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)))
            .addContainerGap())
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addContainerGap())
    );

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

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String line = jTextField1.getText();
    out.println(line);
    jTextArea1.append("\nServer : " + line);
}                                        

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

    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            serverg ob=new serverg();                
            ob.setVisible(true);                      
            ob. jTextArea1.append("waiting for connection"  );
            ob.work();              
        }
    });

}
// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private static javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration                   
}
import java.io.*;
导入java.net。*;
公共类serverg扩展了javax.swing.JFrame{
服务器插座;
插座;
缓冲读取器;
打印输出;
公共服务器g(){
初始化组件();
}
无效工作(){
试一试{
弦线;
ss=新服务器插座(3500);
s=新套接字();
jTextArea1.append(“等待连接”);
s=ss.accept();
in=新的BufferedReader(新的InputStreamReader(s.getInputStream());
out=新的PrintWriter(s.getOutputStream());
打印(“建立连接”);
如果((line=in.readLine())!=null)
jTextArea1.append(“客户机:”+行);
}捕获(IOR异常){
}
}
@抑制警告(“未选中”)
//                           
私有组件(){
jScrollPane1=newjavax.swing.JScrollPane();
jTextArea1=newjavax.swing.JTextArea();
jTextField1=newjavax.swing.JTextField();
jButton1=newjavax.swing.JButton();
jLabel1=newjavax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setName(“Form”);//NOI18N
jScrollPane1.setName(“jScrollPane1”);//NOI18N
/*试一试{
jTextArea1.setEditable(假);
//s=新套接字();
jTextArea1.append(“等待客户端…”);
s=ss.accept();
String line=in.readLine();
jTextArea1.append(“客户机:”+行);
}
捕获(IOR异常){}*/
jTextArea1.设置列(20);
jTextArea1.设置行(5);
jTextArea1.setName(“jTextArea1”);//NOI18N
jScrollPane1.setViewportView(jTextArea1);
jTextField1.setName(“jTextField1”);//NOI18N
org.jdesktop.application.ResourceMap ResourceMap=org.jdesktop.application.application.getInstance(desktopapplication1.desktopapplication1.class).getContext().getResourceMap(serverg.class);
jButton1.setText(resourceMap.getString(“jButton1.text”);//NOI18N
jButton1.setName(“jButton1”);//NOI18N
jButton1.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton1ActionPerformed(evt);
}
});
jLabel1.setName(“jLabel1”);//NOI18N
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1,javax.swing.GroupLayout.DEFAULT_SIZE,380,Short.MAX_值)
.addComponent(jScrollPane1,javax.swing.GroupLayout.DEFAULT\u SIZE,380,Short.MAX\u值)
.addGroup(layout.createSequentialGroup()
.addGap(10,10,10)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED\u SIZE,43,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addGap(98,98,98)
.addComponent(jButton1,javax.swing.GroupLayout.PREFERRED_SIZE,68,javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE,187,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1,javax.swing.GroupLayout.PREFERRED_SIZE,51,javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u值)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,19,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1,javax.swing.GroupLayout.PREFERRED_SIZE,30,javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
包装();
}//                         
私有void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
String line=jTextField1.getText();
out.println(行);
jTextArea1.append(“\n服务器:+行);
}                                        
/**
*@param指定命令行参数
*/
公共静态void main(字符串参数[]){
invokeLater(new Runnable()){
公开募捐{
serverg ob=new serverg();
ob.setVisible(真);
ob.jTextArea1.append(“等待连接”);
ob.work();
}
});
}
//变量声明-不修改
私有javax.swing.JButton jButton1;
私有javax.swing.JLabel jLabel1;
私有javax.swing.JScrollPane-jScrollPane1;
私有静态javax.swing.JTextArea jTextArea1;
私有javax.swing.JTextField jTextField1;
//变量结束声明
}
您的
work()
方法不是
Swing应用程序的一部分,因此您的
main()
方法是错误的,只需将
work()
方法更改为此,这样两个进程都可以在各自的线程上运行,方法是编写
s=ss.accept(),您已阻止事件调度程序线程

此外,你想改变的是什么
public static void main(String args[]) 
{
    final serverg ob=new serverg();  
    java.awt.EventQueue.invokeLater(new Runnable() 
    {
        public void run() 
        {                         
            ob.setVisible(true);                      
            ob. jTextArea1.append("waiting for connection"  );                        
        }       
    });
    ob.work(); 
}
if((line=in.readLine())!=null)
    SwingUtilities.invokeLater(new Runnable()
    {
        public void run()
        {
            jTextArea1.append("Client : " + line );
        }
    });