当我更改按钮的图标然后使用阻止命令(从套接字获取信息)时,直到我得到响应,我才能看到图标中的更改

时间:2019-04-16 17:36:08

标签: java sockets user-interface

我尝试在2个带有图形和所有设备的设备之间编写一个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 :(得分:0)

您需要从其他线程运行通信。 像这样创建一个新的。

 new Thread() {
      @Override
      public void run() {
        // code in here
      }
    }.start();