Mình đang gặp vấn đề ở chỗ này mong các bạn giúp đỡ!
Mình đang viết code chat giữa 2 client dùng multithread 1 thread chuyên nhận 1 thread thì chuyên gưi dữ liệu đi!
Thread gửi đi thì ok còn thread nhận thì cũng đã nhận đc nhưng mà settext cho textfield thì nó lại ko hiện ra??? có ai biết làm sao ko giúp mình với
đây là code của mình
Mã:
public class Client1 extends javax.swing.JFrame implements Runnable { public int PORT_GET = 1234; private ServerSocket serverSocket; Chat chat; public Client1() { initComponents(); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); txtEdit = new javax.swing.JTextField(); jScrollPane1 = new javax.swing.JScrollPane(); txtPain = new javax.swing.JTextArea(); bt = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Client 1"); jPanel1.setBackground(new java.awt.Color(255, 255, 255)); jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jPanel1.add(txtEdit, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 280, 430, -1)); txtPain.setColumns(20); txtPain.setRows(5); jScrollPane1.setViewportView(txtPain); jPanel1.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 470, 250)); bt.setText("jButton1"); bt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btActionPerformed(evt); } }); jPanel1.add(bt, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 320, -1, -1)); 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.PREFERRED_SIZE, 533, javax.swing.GroupLayout.PREFERRED_SIZE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) ); pack(); }// </editor-fold> private void btActionPerformed(java.awt.event.ActionEvent evt) { try { txtPain.setText(txtPain.getText() + "
" + txtEdit.getText());//chỗ này ClientPost clientPost = new ClientPost(txtEdit.getText(), 1235); Thread tt = new Thread(clientPost); tt.start(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Client1().setVisible(true); } }); Client1 obj = new Client1(); Thread t = new Thread(obj); t.start(); } // Variables declaration - do not modify private javax.swing.JButton bt; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField txtEdit; private javax.swing.JTextArea txtPain; // End of variables declaration private void Set(final String str) {//Method dùng để settext Runnable run = new Runnable() { public void run() { txtPain.append(str);//Set giá trị cho textfield } }; SwingUtilities.invokeLater(run); } public void run() { try { serverSocket = new ServerSocket(PORT_GET); while (true) { Socket socket = serverSocket.accept(); //InetAddress ia = socket.getInetAddress(); InputStream is = socket.getInputStream(); if (is.available() > 0) { InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String str; while ((str = br.readLine()) != null) { Set(str);//Set giá trị cho textfield ----> lỗi bắt đầu từ chỗ này } } } } catch (Exception e) { e.printStackTrace(); } }}
View more random threads:
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...