如何在Java jTextField中显示Arduino RFID的数据
我的系统存在这个问题,当我扫描RFID上的卡时,它使用如何在Java jTextField中显示Arduino RFID的数据,java,serial-port,rfid,Java,Serial Port,Rfid,我的系统存在这个问题,当我扫描RFID上的卡时,它使用system.out.println(str)显示UID
system.out.println(str)显示UID但是当我通过jTextField.setText(str)传递它时代码>,它不显示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());
}
}
}