Когда я меняю значок моей кнопки и затем использую команду блокировки (получить информацию из сокета), я не вижу изменения в значке, пока не получу ответ - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь написать игру Tic Tac Toe между двумя устройствами с графикой и всем, но у меня есть проблема. После нажатия кнопки я меняю ее значок, а затем отправляю данные через сокет и использую команду блокировки, чтобы получить ответ. Моя проблема в том, что я вижу изменения в значке кнопки только после того, как получаю ответ от сокета. Кто-нибудь знает, что делать?

Я изучил сокеты на python, и только недавно я решил попробовать написать программу с сокетами на java, поэтому у меня нет большого опыта работы с Java. Я пытался задержать программу, прежде чем ждать ответа, и получить 2 ответа (один из них автоматический), но оба они не дали результатов. Я также пытался использовать таймер для обновления значков кнопки каждый тик, тоже не работал.

Это релевантная часть из моего кода

Socket sock;
PrintWriter pr;
InputStreamReader in;
BufferedReader bf;
public void click(int x, int y)
{
    buttons[x][y].setIcon(new ImageIcon("C:\\Users\\shaked\\Desktop\\red_Pin.jpg"));
    String msg = (char)x + "," + (char)y;
    try     {
    System.out.println("SLEEPING");
    Thread.sleep(1000);
    }
    catch(InterruptedException ex)
    {
        Thread.currentThread().interrupt();
    }
    pr.println(msg);
    pr.flush();
    String enemy_move = bf.readLine();
}

1 Ответ

0 голосов
/ 24 апреля 2019

Вам необходимо запустить связь из другого потока.просто создайте новый, как этот.

 new Thread() {
      @Override
      public void run() {
        // code in here
      }
    }.start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...