如何在Java jTextField中显示Arduino RFID的数据

如何在Java jTextField中显示Arduino RFID的数据,java,serial-port,rfid,Java,Serial Port,Rfid,我的系统存在这个问题,当我扫描RFID上的卡时,它使用system.out.println(str)显示UID

我的系统存在这个问题,当我扫描RFID上的卡时,它使用
system.out.println(str)显示UID,它不显示UID。另外,奇怪的是,当我尝试
System.out.println(jTextField.getText())时它显示UID

有人能帮我解决这个问题吗?如果可能的话,解释一下为什么会这样

这是我的主要课程:

public class IDSystem {

  public static String devicePortName = "Arduino Uno";
  public static SerialPort arduinoPort = null;
  public static InputStream arduinoStream = null;
  public static int PACKET_SIZE_IN_BYTES = 8;

  public static void main(String[] args) {

    int len = SerialPort.getCommPorts().length;
    SerialPort serialPorts[] = new SerialPort[len];
    serialPorts = SerialPort.getCommPorts();

    for (int i = 0; i < len; i++) {

      String portName = serialPorts[i].getDescriptivePortName();
      if (portName.contains(devicePortName)) {
        arduinoPort = serialPorts[i];
        arduinoPort.openPort();
        break;
      }
    }

    PacketListener listener = new PacketListener();
    arduinoPort.addDataListener(listener);

    Login l = new Login();
    l.setVisible(true);
 }

}

我假设您的jtextfield是javax.swing.jtextfield的一个实例

如果未显示您指定的文本,请检查:

  • 您正在正确的JTextField实例上设置文本
  • 您正在向正在显示的容器(JPanel等)添加正确的JTextField实例
  • 作为最后一种手段,如果是因为您在屏幕上已经显示了容器之后将JTextField实例添加到其容器中,请尝试container.validate();container.repaint()

如果您可以显示登录类的代码,以及如何将jtextfield添加到容器中并显示在屏幕上,这将有助于诊断问题。

关于您的代码,我不了解什么是“登录”?它是JFrame还是JDialog?另外,尝试只使用l.jTextField.setText(str);此外,我想你忘了叫“l.setVisible(true)”
public final class PacketListener implements SerialPortPacketListener {

  String ex = "/";
  String id;

  @Override
  public int getPacketSize() {
    return IDSystem.PACKET_SIZE_IN_BYTES;
  }

  @Override
  public int getListeningEvents() {
    return SerialPort.LISTENING_EVENT_DATA_RECEIVED;
  }

  @Override
  public void serialEvent(SerialPortEvent event) {

    byte[] newData = event.getReceivedData();
    String str = new String(newData).split("\n", 2)[0].replaceAll("\\s+", "");

    int byteSize = 0;
    try {
        byteSize = str.getBytes("UTF-8").length;
    } catch (UnsupportedEncodingException ex) {
        Logger.getLogger(PacketListener.class.getName()).log(Level.SEVERE, null, ex);
    }

    if (byteSize == IDSystem.PACKET_SIZE_IN_BYTES) {

        System.out.println(str);
        Login l = new Login();
        l.jTextField.setText(l.jTextField.getText() + str);
        System.out.println(l.jTextField.getText());
    }

  }

}