【问题标题】:How to make program open multiple windows? Java如何让程序打开多个窗口?爪哇
【发布时间】:2014-05-20 15:09:35
【问题描述】:

我的程序正在从目录中获取文件,并开始对该文件进行一些处理。如果处理不好,程序会弹出一个在另一个程序中构建的窗口。

我的问题是,如果打开一个窗口,并且程序想要在将额外的文件添加到目录并进行处理后打开一个额外的窗口,则无法执行此操作。

我编写的代码的最小版本:

while (true) {
    file f = getnewfile();
    if (f==new) {
        processing();
        if (processing == ntgood) {
             window.setVisible(true);
        } else {
    }
}

【问题讨论】:

  • 你能改写你的问题以包含一个问题吗?目前是一个声明。
  • 如果我理解您的问题,应用程序不会打开新窗口。它只打开一个?如果是这种情况,您只有一个窗口,并且您将 Visibility 设置为 true。如果你想要多个窗口,你应该在循环中创建窗口。
  • 这是正确的问题,肯尼斯。是的,我正在 while 循环中创建窗口,但如果之前的窗口仍然打开,它只会打开一个窗口。显示的窗口是以前的窗口。不是两者,这是我的目标
  • 你能从窗口类中发布一些代码吗?我很想知道向用户展示了哪些选项以及您是如何工作的
  • 它的代码很多,但它只是我输入信息的文本字段,按下按钮后,信息将写入 MySQL 数据库中的表中

标签: java swing user-interface


【解决方案1】:

您可以使用 JOptionPane 向用户显示一条小消息。然后,用户可以在闲暇时关闭窗口。

JOptionPane.showMessageDialog(null, "File X parsed");

【讨论】:

  • 也许我没有解释,但在窗口中它的几个命令必须由管理员执行。这就是为什么我不能使用 MessageDialog
  • 哥奇亚。窗户是不是挡住了?它会停止程序线程并等待用户输入吗?
  • 不,窗口没有阻塞。该程序在外面运行完美。但是当 2 号窗口试图打开时,它并没有在新窗口中启动,而是旧窗口像新窗口一样“闪烁”。我试过使用 eventQueue.invokelater 但它没有做这项工作
【解决方案2】:

您可以按如下方式打开多个窗口:

import java.awt.EventQueue;

import javax.swing.JFrame;

public class WindowOpener {

    private static final int WINDOW_COUNT = 5;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                for (int i = 0; i < WINDOW_COUNT; i++) {
                    JFrame f = new JFrame();
                    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    f.setSize(150, 250);
                    f.setVisible(true);
                }
            }
        });
    }
}    

【讨论】:

    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多