Java - 从外部输入中永久收听数据

时间:2017-12-13 12:14:25

标签: java listener

我想询问你是否可以永远听外部输入,而你可以做按钮点击,短信输入等事件。

就像它每秒都在监听,如果它收到数据,它会做一些事情。如果它没有接收数据,那么它继续监听数据。

在听的时候,我可以做我上面提到的事件。

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

从流中读取的唯一好方法是在一个单独的线程中。对于一个愚蠢的例子,如果你想用最后一个字节读取更新标签,这样的东西可能会起作用:

static void startListening(DataInputStream inputStream, JLabel label) {
    new Thread(() -> {
        try {
            while (true) {
                int i = inputStream.read();
                if (i < 0) {
                    updateText(label, "Closed");
                    break;
                } else {
                    updateText(label, "Latest byte: " + i);
                }
            }
        } catch (Exception e) {
            updateText(label, "Error: " + e);
        }
    }).start();
}

static void updateText(JLabel label, String text) {
    SwingUtilities.invokeLater(() -> label.setText(text));
}