【问题标题】:Java JTextArea not updatingJava JTextArea 未更新
【发布时间】:2017-11-28 13:36:51
【问题描述】:

我正在编写一个程序来分隔通过 RS-232 串行获得的数据。程序需要从三台机器和三个 COM 端口接收数据。

我已经编写了一些代码来更新程序界面中的 JTextArea,以通知用户程序当前正在侦听的端口,但是文本区域没有根据代码更新并且保持空白。代码是这样的:

public String ComStat;

public void comDefine() 
{
    if (Serial.currPortId.getName() == null) {
        ComStat = "NONE";
    } else if (Serial.currPortId.getName() == "COM1") {
        ComStat = "COM1";
    } else if (Serial.currPortId.getName() == "COM2") {
        ComStat = "COM2";
    } else if (Serial.currPortId.getName() == "COM3") {
        ComStat = "COM3";
    } else {
        ComStat = "NONE";
    }
}

对于 jTextArea 我们有:

private JPanel createPanel(String text) {

    JPanel panel = new JPanel();
    JLabel lbl = new JLabel(text);
    panel.add(lbl);
    listenState = new JTextArea(ComStat);
    listenState.setBorder(new BevelBorder(BevelBorder.LOWERED));
    listenState.setLineWrap(true);
    listenState.setWrapStyleWord(true);
    add(listenState, BorderLayout.SOUTH);
    panel.add(listenState);

    return panel;
}

任何有关让 JTextArea 实际显示它是否正在侦听端口以及它正在侦听的端口的帮助将不胜感激。我已经删除了大部分代码,以便于阅读我实际遇到问题的区域。

【问题讨论】:

  • 我没有看到您更新文本区域的任何代码。这只是创建它的代码。没有从 COM 端口读取的代码,也没有将二进制数据转换为文本或将文本附加到文本区域的代码。

标签: java serial-port


【解决方案1】:

使用jTextArea_variable.setText(string);中的字符串变量:

listenState.setText(ComStat);

【讨论】:

  • 使用listenState.setText(ComStat);当我实际运行程序时不会改变任何东西。不幸的是,文本仍然是空白的。
  • 我认为问题本身,经过调查,在于“comDefine”方法。它实际上从未被调用过,因此它永远不会改变“ComState”的值。
  • 我解决了这个问题!解决方案是使用 if 语句直接寻址 com 端口代码。
【解决方案2】:

当你有类似的代码时

new JTextArea(ComStat)

然后文本区域复制变量的当前值。如果您以后更改变量,这对JTextArea 没有影响。每当您更改变量时,您都需要调用 listenState.setText(ComStat); 来更新 UI。使用append(String) 添加更多文本。

注意:您必须确保在 UI 线程中调用它。如果您使用多个线程来读取串口,您必须将上面的行包裹在SwingUtilities.invokeLater() 中。见https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html#invokeLater(java.lang.Runnable)

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多