Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我的体重秤关上时,我的JFrame冻结了_Java_Swing_Jframe - Fatal编程技术网

Java 当我的体重秤关上时,我的JFrame冻结了

Java 当我的体重秤关上时,我的JFrame冻结了,java,swing,jframe,Java,Swing,Jframe,我有一个java应用程序,我正在开发一个场景,如果我的称重秤关闭,我的应用程序是否可以工作。但是,当我关掉我的体重秤时,我的JFrame冻结了。是否有此错误的代码?这是密码 系统在第4行冻结 serialPort.openPort();//Open serial port serialPort.setParams(9600, 8, 1, 0);//Set params. serialPort.writeBytes("R".getBytes()); String a = serialPort.re

我有一个java应用程序,我正在开发一个场景,如果我的称重秤关闭,我的应用程序是否可以工作。但是,当我关掉我的体重秤时,我的JFrame冻结了。是否有此错误的代码?这是密码 系统在第4行冻结

serialPort.openPort();//Open serial port
serialPort.setParams(9600, 8, 1, 0);//Set params.
serialPort.writeBytes("R".getBytes());
String a = serialPort.readString(13).trim();

看起来你是在UI线程中完成的。基本上应该避免在UI线程中执行I/O,因为这意味着在I/O等待时,UI将没有响应

相反,您应该使用异步I/O,或者在单独的线程中执行所有I/O,但请记住将任何结果封送回UI线程,因为您不应该在UI线程上执行任何UI工作。有关更多详细信息,请参阅


另外,我强烈建议不要在不指定编码的情况下调用
getBytes()
,因为您确实不想使用平台编码。(在本例中,我怀疑您知道要写入的单个字节,因此我将直接写入…

嗯,看起来您是在UI线程中执行此操作的。基本上应该避免在UI线程中执行I/O,因为这意味着在I/O等待时,UI将没有响应

相反,您应该使用异步I/O,或者在单独的线程中执行所有I/O,但请记住将任何结果封送回UI线程,因为您不应该在UI线程上执行任何UI工作。有关更多详细信息,请参阅


另外,我强烈建议不要在不指定编码的情况下调用
getBytes()
,因为您确实不想使用平台编码。(在这种情况下,我怀疑您知道要写入的单个字节,因此我会直接写入…

嗨,Jon爵士,谢谢您提供的信息。但我的问题在4号线。很抱歉,我是个新来的秤读数员。如果我错了,请更正,先生,第4行等待用户输入。但是我应该怎么做来验证我的体重秤是否有问题呢?先谢谢你。抱歉语法错误。@BonjoBondad:据我所知,第4行正在等待串行端口。大概如果天平关闭了,那就再也不会回来了——因此,正如我所描述的,你的UI会冻结。至于您是否需要处理任何异常——是的,您应该处理I/O异常,但我不能真正告诉您应该如何处理它们。至于检测天平是否关闭,我不知道这有多容易。我建议您尝试使用一个简单的控制台应用程序,因为它比Swing UI更容易搞乱。是否抛出任何异常?你确定你的写作成功了吗?谢谢你,先生。我正在尝试一些异常代码。希望知道是哪一个(再次感谢你长官,第4行不会抛出异常,我很确定代码会写入串行端口。因为一旦我运行程序,串行适配器就会亮起。某些数据的含义是正在写入端口。问题是为什么串行适配器没有响应称没有返回数据。@BonjoBondad:恐怕我不能告诉你这一点。。。不过,如果你不在UI线程中,你的UI不会冻结。嗨,Jon先生,谢谢你提供的信息。但我的问题在4号线。很抱歉,我是个新来的秤读数员。如果我错了,请更正,先生,第4行等待用户输入。但是我应该怎么做来验证我的体重秤是否有问题呢?先谢谢你。抱歉语法错误。@BonjoBondad:据我所知,第4行正在等待串行端口。大概如果天平关闭了,那就再也不会回来了——因此,正如我所描述的,你的UI会冻结。至于您是否需要处理任何异常——是的,您应该处理I/O异常,但我不能真正告诉您应该如何处理它们。至于检测天平是否关闭,我不知道这有多容易。我建议您尝试使用一个简单的控制台应用程序,因为它比Swing UI更容易搞乱。是否抛出任何异常?你确定你的写作成功了吗?谢谢你,先生。我正在尝试一些异常代码。希望知道是哪一个(再次感谢你长官,第4行不会抛出异常,我很确定代码会写入串行端口。因为一旦我运行程序,串行适配器就会亮起。某些数据的含义是正在写入端口。问题是为什么串行适配器没有响应称没有返回数据。@BonjoBondad:恐怕我不能告诉你这一点。。。但是,如果你不在UI线程中,你的UI就不会冻结。