Java 摆动输出不';我第一次跑步时没有出现
我正在尝试使用swing-in-netbeans执行一个简单的客户机-服务器通信。第一次运行时,它显示一个空白窗口。我在没有关闭第一个输出窗口的情况下再次运行它,它显示了所需的输出。我正在附上密码 谢谢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
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 );
}
});