当前位置: 首页 > 面试题库 >

如何在我的扫描仪之前调用GUI代码?

汪德寿
2023-03-14
问题内容

打开GUI窗口之前,从命令行获取输入时遇到了一些麻烦。我之前在Apple
Exchange上问过这个问题,但是在我们确定这是一个编程问题后才发送到这里。基本上,在打开窗口之前,我正在运行扫描仪以获取用户输入,但它会启动程序,在Mac上切换空间,然后必须切换回带有终端的工作区才能回答问题。这是原始问题的链接。

https://apple.stackexchange.com/questions/45058/lion-fullscreen-desktop-
switching-
quirk/45065#comment51527_45065

这是我测试过的代码…

public class Client extends JFrame {

  public static void main(String[]args) {
    Scanner in = new Scanner(System.in);
    System.out.printf("\nGive me a size for the screen: ");
    String response = in.nextLine();
    new Client(response);
  }

  public Client(String title) {
    super(title);
    super.setVisible(true);
  }

}

问题答案:

使用invokeLater()启动GUI
后, 你得到的输入。

    final String response = in.nextLine();
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            new Client(response);
        }
    });

请注意,由于时序差异,您的示例在我的平台上运行良好。还可以考虑使用args数组传递参数,或询问实现方法,如FullScreenTest

附录:仔细阅读其他线程,可以使用以下方法NamedFrame在单独的JVM
中启动。

package cli;

import java.awt.EventQueue;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.JFrame;

/** @see https://stackoverflow.com/q/9832252/230513 */
public class CommandLineClient {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Give me a name for the screen: ");
        final String response = in.nextLine();
        try {
            ProcessBuilder pb = new ProcessBuilder(
                "java", "-cp", "build/classes", "cli.NamedFrame", response);
            Process proc = pb.start();
        } catch (IOException ex) {
            ex.printStackTrace(System.err);
        }
    }
}

class NamedFrame extends JFrame {

    public NamedFrame(String title) {
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationByPlatform(true);
        setVisible(true);
    }

    public static void main(final String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame f = new NamedFrame(args[0]);
            }
        });
    }
}


 类似资料:
  • 在分离标记之前,我试图检查扫描仪是否有多个标记。我目前正在尝试使用扫描仪。hasNext()(我的扫描仪的名字是sc)。如果用户输入“string int”,那么我不想打印“enter age”或“enter grade” 目前,无论输入是什么,我的程序都会跳过if语句。如果我把它拿走!然后,即使输入是一行,这些行也会打印出来。他们似乎也打印后,下一个是我发现奇怪的。我将非常感谢您的帮助!

  • 我是java新手,我的任务是使用扫描器读取数组,并在另一种方法中读取int。 我正在做的是计算一只兔子到达河对岸所需的最小跳跃次数。数组中的int表示从河的一边开始的石头的距离,另一个int表示石头的数量。兔子能跳的最远距离是50。 对于输入和输出: 输入n:7(输入,河中的石头数)32 46 70 85 96 123 145(输入,石头与起点之间的距离,最后一个数字是河的宽度,即目的地(河对岸)

  • 我想读取一个文本文件,并将每一行放入一个字符串(字符串数组)。然而,这需要扫描文件两次,一次是为了找出有多少行,另一次是为了创建一个这样大小的字符串数组。但它抛出了一个错误,重置方法似乎不起作用。 这是相关的代码片段。

  • 我对java和一般的编码都很陌生,我正试图弄明白如何让这个游戏在学校的一个项目中发挥作用。它的意思是让你输入一个月,然后它会要求你选择一天,但是当我输入一个月时,它总是说这是一个无效的输入,这是我希望它做的,当它不是一个有效的月份。我做错了什么?

  • 问题内容: 我试图在Go中编写一个扫描程序,以扫描连续行,并在返回之前清理掉行,以便您可以返回逻辑行。因此,给定以下SplitLine函数(Play): 我希望代码返回类似以下内容: 但是,它在返回第一行后停止。第二个电话返回。 任何人有任何想法,还是一个错误? 问题答案: 我认为这是一个错误,因为即使返回的令牌为nil(bufio.SplitFunc),也不会将Advance value> 0用

  • 问题内容: 我的Java作业有问题。我遇到了意外的异常,特别是: java.util.NoSuchElementException:找不到行 我正在使用,该程序不断读取任何内容,并重复“无效格式”异常文本。如果输入正确的值,则第一部分通过,然后该部分立即进入此异常。如果输入的值不正确,则它将开始循环异常。 这是我的代码: 问题答案: 您关闭了多个库,这些库关闭了底层库,因此另一个库将不再从同一库和