1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

socket em swing

tenho uma classe que recebe dados de um servidor socket. deixo uma thread de escuta. mas ao ler a resposta do servidor nao consigo acessar o Jtext do swing.

segue minha classe

public class TELAPRATICA extends JFrame {
    String uname;
    PrintWriter pw2;
    BufferedReader br2;
    JPanel contentPane;
    // panel.setBackground(Color.YELLOW);
    String recebenome;

    JLabel usul;

    private static JTextField usult = null;

    private JLabel senhal;
    private JTextField senhat;

    String umho = "";

    private JLabel kcal;
    private JTextField kcalt;

    private JLabel dist;
    private JTextField distt;

    JLabel dur;
    JTextField durt;

    private JLabel carga;
    private JTextField cargat;

    JComboBox EXERCICIOS;

    private JTextArea displayArea;

    Socket client1;

    public TELAPRATICA() throws Exception {

        client1 = new Socket("192.168.0.106", 24311);

        br2 = new BufferedReader(new InputStreamReader(client1.getInputStream()));
        pw2 = new PrintWriter(client1.getOutputStream(), true);
        buildInterface();

        new MessagesThread().start(); // create thread for listening for
                                        // messages

        // }
    }

    public void buildInterface() {

        pw2.println("ex1");

        final JComboBox EXERCICIOS = new JComboBox();

        JLabel usul = new JLabel();
        usul.setText("usuario");
        System.out.println("textoEVENTO1");
        final JTextArea usult = new JTextArea();

        usult.setText("OI");
        JLabel dur = new JLabel();
        dur.setText("duracao");
        JTextField durt = new JTextField();

        JLabel dist = new JLabel();
        dist.setText("distancia");
        JTextField distt = new JTextField();

        JLabel carga = new JLabel();
        carga.setText("carga");
        JTextField cargat = new JTextField();

        // usult.setText("RSS");

        JButton BGRAVAR = new JButton();

        JButton BVOLTAR = new JButton();

        BGRAVAR.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                pw2.println("p");
                pw2.println(usult.getText());
                pw2.println(recebenome);
                // ;
                // System.exit(1);

                System.out.println("linha11111111111 " + usult.getText() + recebenome);

            }
        });

        // /////////////////////////////////////////////////////////////////////////////////////////
        BVOLTAR.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                Catalogo out = new Catalogo();
                out.RECEBE(recebenome);
                setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                dispose();

            }
        });

        // //////////////////////////////////////////////////////////////////////////////////////////

        ImageIcon IVOLTAR = new ImageIcon("VOLTAR.PNG");
        ImageIcon IN = new ImageIcon("pencil.PNG");

        BGRAVAR.setText("GRAVAR");

        contentPane = (JPanel) this.getContentPane();

        contentPane.setLayout(null);
        contentPane.setBackground(new Color(187, 198, 161));

        addComponent(contentPane, EXERCICIOS, 50, 100, 84, 25);

        addComponent(contentPane, usul, 50, 200, 84, 25);
        addComponent(contentPane, usult, 100, 200, 184, 25);

        addComponent(contentPane, dist, 250, 200, 84, 25);
        addComponent(contentPane, distt, 300, 200, 300, 25);

        addComponent(contentPane, dur, 50, 400, 84, 25);
        addComponent(contentPane, durt, 100, 400, 184, 25);

        addComponent(contentPane, carga, 250, 400, 84, 25);
        addComponent(contentPane, cargat, 300, 400, 184, 25);

        addComponent(contentPane, BGRAVAR, 500, 425, 50, 30);

        addComponent(contentPane, BVOLTAR, 600, 425, 50, 30);

        this.setVisible(true);

        this.setTitle("TELA PRATICA");
        this.setLocation(new Point(1, 1));
        this.setSize(new Dimension(500, 500));
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setResizable(true);
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);

        durt.setText("line");

    }

    private void addComponent(Container container, Component c, int x, int y, int width, int height)
    {
        c.setBounds(x, y, width, height);
        container.add(c);
    }

    public void RECEBE(String cod) {

        recebenome = cod;
        System.out.println("USUARIO++++++++++" + recebenome);
        // buildInterface();
    }

    public static void main(String... args) {

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {

                try {
                    TELAPRATICA app = new TELAPRATICA();
                    app.buildInterface();
                } catch (Exception ex) {
                }

            }

        });
    }

    public void run() {

        String line;

        String line2 = "1";
        try {
            while (true) {

                line = br2.readLine();

                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {

                        usult.setText("TTTT");

                    }
                });

                // /////////////////////////////

            } // end of while
        } catch (Exception ex) {
        }
    }
}

// inner class for Messages Thread
class MessagesThread extends Thread {

} // end of client
  • Oi Daniel, este seu código tá meio confuso e a formatação não ajuda. Você dar uma melhorada e explicar onde você quer fazer o acesso ao JText e qual é o JText que quer escrever os dados que recebe do socket? Ah, só para esclarecer, dentro da Thread que lê os dados do socket, você precisa "enxergar" o seu JText, ou pelo menos a classe que contém este componente deve dispor de um método para escrever nele.

    Leandro Assad Martins   26 de jun de 2015
  • com enxergar tipo eu tenho uma thread escutando e a construção da intereface esta feita como jazer um setText sem erro ???

    rodrigosayao   26 de jun de 2015
  • O código não é meu, eu não fiz a pergunta.

    Daniel Dias   26 de jun de 2015
  • Oi Daniel, desculpe, é que vi seu nome e me confundi. Agora, rodrigosayao, a Thread que escuta o socket está em outra classe, diferente da que cria a interface?

    Leandro Assad Martins   26 de jun de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags sockets swing ou faça a sua própria pergunta.