【问题标题】:JOptionPane runs in the back, how to run it up front?JOptionPane 在后面运行,如何在前面运行呢?
【发布时间】:2014-04-16 21:47:28
【问题描述】:

遇到了一个问题,希望有人能帮我解决。我在我的程序中使用了一个 JOptionPane,但是当我运行这个类时,第一个 JOptionPane 会在后台弹出,所以你在 eclipse 中看不到它,直到你 alt + tab 并找到它。

我如何得到它以便它在前面运行?

我的 GUI 类代码,它将创建我的窗格。

import java.io.IOException;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JFrame;

public class GUI {

@SuppressWarnings("unused")
public void getConfirmation() throws IOException {

    JFrame frame = new JFrame();        
    Object[] options = {"Continue","Stop procedure"};

    int n = JOptionPane.showOptionDialog(frame,
            "Would you like to continue or stop procedure?",
            "Plese confirm",
            JOptionPane.YES_NO_OPTION,
            JOptionPane.QUESTION_MESSAGE,
            null,
            options,
            options[0]);
            frame.toFront();
            frame.repaint();
            if(JOptionPane.YES_OPTION == 1) {

                // Program will keep going
            }

            else if (JOptionPane.NO_OPTION == 0) {

                System.out.println(" ");
                System.out.println("Procedure terminated");
                System.out.println(" ");
            }



}

}

我从另一个类运行 GUI 类,如下所示:这里您可以看到我的客户端类中的一些代码。

System.out.println("You received " + fromServer + " from the server");
System.out.println("Please answer confirmationbox" + "\n\n");
GUI.getConfirmation();

但我发现,它只是第一次运行它会在后台启动,之后当我再次尝试运行它时,我会正常运行。

【问题讨论】:

  • 它对我来说工作正常。也请分享入门课程。
  • oki,我会更新我的帖子,30秒后签到
  • getConfirmation 方法不是静态的。你不能说GUI.getConfirmation();。请确认。

标签: java


【解决方案1】:

试试

frame.setAlwaysOnTop(true);

欲了解更多信息,请查看Window#setAlwaysOnTop()

尝试使用null parent,定义如下:

int n = JOptionPane.showOptionDialog(null,
        "Would you like to continue or stop procedure?", "Plese confirm",
        JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);

更多信息请查看JOptionPane

定义要成为此对话框的父级的组件。它有两种使用方式:包含它的 Frame 用作对话框的 Frame 父级,其屏幕坐标用于放置对话框。通常,对话框位于组件的正下方。此参数可能为空,在这种情况下,默认 Frame 被用作父级,并且对话框将在屏幕上居中(取决于 L&F)。


--编辑--

如果没有任何效果,请在How to Make Dialogs 找到答案。

【讨论】:

  • 仍然在后面运行,我仍然需要 alt + tab 才能找到它:(
  • 好吧,我想我必须制作一个可以先运行然后关闭的虚拟框架?你知道怎么做这样的框架吗?
  • @Walter 在上面的链接中发布了一个示例。请看一下
猜你喜欢
  • 2020-08-19
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多