【问题标题】:Fixing JOptionPane code that will not show?修复不会显示的 JOptionPane 代码?
【发布时间】:2016-09-04 14:34:46
【问题描述】:

他是我的代号:

    import java.util.Scanner;
    import javax.swing.JOptionPane;
    public class TicketNumber 
    {
        public static void main(String[] args) 
        {
            Scanner key = new Scanner(System.in);
            System.out.print("Please enter your six digit ticket number: ");
                int tNumber = key.nextInt();
                int lastDigit = tNumber%10;
                tNumber = (tNumber -(lastDigit))/10;
                boolean evaluation = false;
            if (tNumber%7 == lastDigit)
                evaluation = true;
            JOptionPane.showMessageDialog(null, "This number is a " + evaluation + " ticket number.");
        }
    }

当我运行程序时,JOptionPane 没有出现。我只是希望它显示一个带有真/假结果的消息框,因为我已经设置了它。

【问题讨论】:

  • 应在 EDT 上创建 Swing GUI。
  • 我测试了你的代码,工作正常,我没有发现问题,JOptionPane 显示正确。
  • 实际上,它正在工作。它只是显示在其余应用程序的后面。我找不到让它显示在顶部的快速解决方案,但是如果您使用 int tNumber = Integer.parseInt( JOptionPane.showInputDialog("Please enter your six digit ticket number: ") ); 而不是扫描仪,那么您的问题将得到解决。
  • 也可以考虑boolean evaluation = tNumber % 7 == lastDigit;

标签: java swing joptionpane messagedialog


【解决方案1】:

我记得对话框可能有相对对象,它就在对话框的正下方,但在你的情况下它是 null

JOptionPane.showMessageDialog(null, "This number is a " + evaluation + " ticket number.");

作为一项规则,JOptionPane 应该使用一些容器来关联,例如 JFrame;

未测试

JFrame f=new JFrame();

JOptionPane.showMessageDialog(f, "This number is a " + evaluation + " ticket number.");

如果您还有其他问题,请发表评论

【讨论】:

  • “未测试” 你也没有看一眼 Java Docs。对于JOptionPane.showMessageDialog(parentComponent,message) "parentComponent - 确定在其中显示对话框的Frame;如果null,或者如果parentComponent 没有Frame,则默认Frame 被使用”
  • @AndrewThompson 默认框架,是的,但是如果你想让 JOptionPane 在某个特定框架上方可见,你应该指出它;顺便说一句,我说"should use some container..." 不是"must use..." 所以我不引用文档,而只是指出一些常见的用例:)
  • "..above some specific frame.." 在您的答案的代码示例中,甚至没有设置 visible.
【解决方案2】:

您可以将 JFrame 用作配置为 alwaysOnTop 的父级。但是,您的 MessageDialog 也会显示在所有 Windows 之上。

...
JFrame f = new JFrame();
f.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(f, "This number is a " + evaluation + " ticket number.");
f.dispose();
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2021-04-23
    • 2012-11-03
    • 2020-09-11
    相关资源
    最近更新 更多