【问题标题】:JOptionPane breaks scanner input if keyboard is pressed如果按下键盘,JOptionPane 会中断扫描仪输入
【发布时间】:2023-03-27 23:25:01
【问题描述】:

我已将问题简化为以下代码。

运行时,您会看到一条消息。

如果您使用鼠标并单击“确定”,则可以继续键入新命令。

如果您在键盘上按“输入”或“空格”,则键盘输入会中断。即一个人可以在命令行中输入内容,但“返回”不会做任何事情。

import java.io.IOException;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class MainClass {

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("hello, please enter your command");
            String UsrCmd = sc.nextLine();
            System.out.println("you tyep: " + UsrCmd);

            JOptionPane.showMessageDialog (null,"Dialog Text","Title Text",JOptionPane.QUESTION_MESSAGE);

            //Work around for Linux users:
            //Runtime.getRuntime().exec("/usr/bin/zenity --info --text='hello'");
        }
    }
}

(我是 S.o.f 的新手。我提前为错误道歉。请在我犯错误的地方纠正我。谢谢)。

JR 1.7 Fedor 20 64 位。

【问题讨论】:

  • 你的代码在我测试时运行良好。

标签: java swing keyboard java.util.scanner joptionpane


【解决方案1】:

它应该可以正常工作,因为您没有任何可以停止 while 执行或中断的语句;命令。但是,我建议您使用 JDK(Java 开发人员工具包)而不是 JRE。

【讨论】:

  • 它应该可以工作,但不符合 OP。在 cmets 中向他提问,说您是否在自己的系统上尝试过代码(哪一个?)。如果他编译 Java 代码,我猜他有一个 JDK。
  • 抱歉,我还不能在其他帖子中发表评论,因为我没有所需的声誉。但是,通过这个答案,我的意思是它不是代码问题,而是软件问题(可能是操作系统)。我用 JDK 1.7.0_45 测试了自己的代码,它工作正常。我的操作系统是 Windows 7 x64。
  • JDK 和 JRE 我都试过了,不幸的是,结果都是一样的。
猜你喜欢
  • 2012-12-01
  • 2013-08-19
  • 2011-08-03
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
相关资源
最近更新 更多