Установите данные с сервера WebSocket в компоненты JFrame.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Установите данные с сервера WebSocket в компоненты JFrame.

Сообщение Anonymous »

У меня есть сервер WebSocket:

Код: Выделить всё

@ServerEndpoint(value = "/demoApp")
public class MyWebSocketServer {
@OnMessage
public String onMessage (String message, Session session) throws IOException {
for(Session session1 : Main.sessions){
if(!session1.equals(session)){
session1.getBasicRemote().sendText(message);
}
}
}
}
Он уведомляет всех подключенных, кроме того, кто отправил сообщение.
И у меня есть клиентская часть:

Код: Выделить всё

@ClientEndpoint
public class WebSocketClient {
@OnMessage
public void onMessage (String message, Session session) {
System.out.println("[SERVER RESPONSE]: " + message);
MyJFrame.setButtonGrid(message);
}
}
Мой JFrame:

Код: Выделить всё

public class MyJFrame extends javax.swing.JFrame {

//some generated stuff

public static void setButtonGrid(String message){
Component[] components = this.getContentPane().getComponents();
int i = 0;
for(Component component : components){
if(component instanceof JButton button){
if("Restart".equals(button.getText())){
continue;
}
if(message.charAt(i) == '*'){
button.setText("");
}
else {
button.setText(message.charAt(i) + "");
}
}
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TTTForm().setVisible(true);
}
});
ClientManager clientManager = ClientManager.createClient();
URI uri = null;
try {
uri = new URI("ws://localhost:8080/java/demoApp");
session = clientManager.connectToServer(WebSocketClient.class, uri);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (DeploymentException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Но в методе setButtonGrid я не могу получить компоненты моего JFrame, очевидно, потому что это статический метод. Но если он не статический, то я не смогу вызвать его из класса моего WebSocket-клиента. Итак, как мне изменить текст в кнопках JFrame, когда информация поступает с сервера WebSocket?

Подробнее здесь: https://stackoverflow.com/questions/791 ... components
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»