Mqtt-client JAVA + user интерфейс

Я стараюсь осуществлять код, который использовал бы протокол MQTT в Java, в настоящее время прихожу C ++ и давно не программирую (Мотивы университета), но нуждаюсь в том, чтобы снова взять с маленьким проектом в JAVA, и который лучше одной ты видишь, что помнить мое знание в POO и заканчиваться в JAVA хорошего способа. Мой код используя MQTT с книжными магазинами PAHO, подписывается на тему и функционирует хорошо но, мне нужно, чтобы результат не показал это мне в консоли, если не в панели с JFrame или хороший, такой я это подумал идею, это потому, что он появился в графическом интерфейсе и не в консоли, и vdd я не знаю, как делать это. Я надеюсь, что они я могут сотрудничать

package com.mycompany.mavenproject1;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;


public class Ventana2 extends JFrame implements MqttCallback{

    MqttClient clienteJava;
    MqttConnectOptions connectOptions;

    static final String topic = "Temperatura";    
    static final String Broker = "tcp://iotmosquitto.cloudapp.net:1883";
    static final String ClientID = MqttClient.generateClientId();
    static final Boolean Pub = true;
    static final Boolean Subs = true;

    JPanel Panel;
    JLabel Texto;

    // connectionLost se invoca apenas la conexión se pierda
    @Override
    public void connectionLost(Throwable thrwbl) {
        //throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
        System.out.println("Se ha perdido la conexíón");

        //Código para reconectar podría ir aquí.
    }

    // messageArrived se invoca cuando un suscriptor del tópico ha recibido el mensaje
    @Override    
    public void messageArrived(String Topico, MqttMessage Message) throws Exception {
        //throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
        String mensaje = new String(Message.getPayload());
        System.out.println(mensaje);        

    }

    // deliveryComplete se invoca cuando el broker ha recibido exitosamente un mensaje       publicado por este cliente
    @Override
    public void deliveryComplete(IMqttDeliveryToken token) {
        //throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.

    }

    public void ventana(String mensaje){
        Panel = new JPanel();
        Texto = new JLabel();

        this.add(Panel);
        Panel.add(Texto);
        Texto.setText(mensaje);
    }

    public void ejecutaCliente(){
        // preparando un cliente MQTT

        connectOptions = new MqttConnectOptions();        
        connectOptions.setCleanSession(true);
        connectOptions.setKeepAliveInterval(50);        
        //MqttTopic Topico = clienteJava.getTopic(topic);

        //conexion al broker
        try{
            clienteJava = new MqttClient(Broker, ClientID);
            clienteJava.setCallback(this);
            clienteJava.connect(connectOptions);

        }catch(MqttException e){
            e.printStackTrace();
            System.exit(-1);
        }

        System.out.println("Ha sido conectado al broker " + Broker);

        // Preparando un tópico
        //MqttTopic Topico = clienteJava.getTopic(Topico);

        try{
                int subQoS = 1;
                clienteJava.subscribe(topic,subQoS);
        }catch(Exception e) {
                e.printStackTrace();
        }

    }


}
1
задан 16.04.2016, 23:33
1 ответ

Проблема коренилась использовать трэды, так как работают несколько процессов, и не используя их, функционируй, но не работает программа соответствующим образом, для них просто я привел в соответствие программу лучшего способа, которого я заинтересовал, могу давать код.

1
ответ дан 24.11.2019, 14:35
  • 1
    В сообщество его интересует идея о природе problemos трэдов, которые у тебя были, и как ты это решил. Чувствуй себя гостем расширения твоего ответа. Tambié n ты можешь принимать это. Это интересная тема, потому что Swing не " threadsafe" начала. Я представляю себе то, что полный проект podrí чтобы быть слишком широк для ответа, но каких-то образцов có я говорю критик с комментариями serí an чудесные. – Stefan Nolde 28.03.2017, 07:12