Witam wszystkich :-) jest to mój pierwszy post na tym forum.
Program działa tak, że gdy odbierze jakiekolwiek dane od Brokera to powinien je ustawić w formie tekstu w textArea, dokładnie to w metodzie onPublish:
public void onPublish(UTF8Buffer utf8Buffer, Buffer buffer, Runnable runnable) {...
która wywołana zostaje w callbacku. Jednakże tak się nie dzieję i nic nie pojawia się w textArea.
Metoda ustawiam_txt() jest wywoływana ponieważ działa:
System.out.printf("Wywołanie z konstruktora %n ");
To jest kod:
public class Aplikacja {
private JButton button1;
private JPanel panel1;
JTextArea textArea = new JTextArea();
public void ustawiam_txt(){
textArea.setText("zerowanie");
System.out.printf("Wywołanie z konstruktora %n ");
}
public Aplikacja(){
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
}
public static void main(String[] args) {
JFrame jFrame = new JFrame("Aplikacja");
jFrame.setContentPane(new Aplikacja().panel1);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setVisible(true);
MQTT mqtt = new MQTT();
mqtt.setPassword("mojeHasło");
mqtt.setUserName("mojaNazwa");
try {
mqtt.setHost("tcp://m24.cloudmqtt.com:10838");
} catch (URISyntaxException e1) {
e1.printStackTrace();
}
final CallbackConnection connection = mqtt.callbackConnection();
connection.listener(new Listener() {
@Override
public void onConnected() {
System.out.printf("Callback Połączono %n");
}
@Override
public void onDisconnected() {
System.out.printf("onDisconnected() %n");
}
@Override
public void onPublish(UTF8Buffer utf8Buffer, Buffer buffer, Runnable runnable) {
System.out.printf("onPublish %n"+buffer+ "%n");
Aplikacja aplikacja = new Aplikacja();
aplikacja.ustawiam_txt();
}
@Override
public void onFailure(Throwable throwable) {
System.out.printf("onFailure %n");
}
});
connection.connect(new Callback<Void>() {
@Override
public void onSuccess(Void aVoid) {
System.out.printf("Wywołanie Callbacka z sukcesem %n");
Topic[] topics = {new Topic("nowy topik",QoS.AT_LEAST_ONCE)};
connection.subscribe(topics, new Callback<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
System.out.printf("Zasubskrybowano topik %n ");
}
@Override
public void onFailure(Throwable throwable) {
}
});
}
@Override
public void onFailure(Throwable throwable) {
System.out.printf("onFailure() %n");
}
});
connection.publish("nowy topik", "Gratulacje".getBytes(), QoS.AT_LEAST_ONCE, false, new Callback<Void>() {
@Override
public void onSuccess(Void aVoid) {
System.out.printf("Opublikowano dane %n");
}
@Override
public void onFailure(Throwable throwable) {
System.out.printf("onFailure() %n");
}
});
}
}
Gdzie może leżeć problem?
Powinienem operować w osobnym wątku na polach tekstowych?