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

一次显示多个MessageDialog

彭宏阔
2023-03-14
问题内容

我正在尝试制作一个程序,一次显示3个MessageDialog框。我以为,如果您为设置JOPtionPane.showMessageDialog一个actionListnerswing timer,它将MessageDialog每秒显示一个新框。

所以这是我想出的代码:

package pracatice;

import java.awt.event.*;

import javax.swing.*;

public class practice extends JFrame 
{
    public static int num = 0;
    public static TimerClass tc = new TimerClass();
    public static Timer timer = new Timer(1000, tc);
    public JPanel panel = new JPanel();
    public JButton btn = new JButton("press");

    public practice()
   {
        setSize(100,100);
        setTitle("Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        setPanel();
        setVisible(true);   
  }
     public void setPanel()
     {
        btn.addActionListener(new listener());
        panel.add(btn);

        add(panel);
    }

    public class listener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            num = 0;
            System.out.println("starting timer");
            timer.start();
        }
    }

      public static class TimerClass implements ActionListener
      {
        public void actionPerformed(ActionEvent e)
        {
            System.out.println("Adding 1 to num");
            num++;
            JOptionPane.showMessageDialog(null,"Test");
           if(num == 3)
           {
                System.out.println("stopping the timer");
                timer.stop();
            }
       }
 }

 public static void main(String[] args)
 {
    practice p = new practice();
    System.out.println("created an instance of practice");
 }

}

它有效,但不是我想要的方式。在上一个按ok之后,它每秒显示一个新框,而不是每秒显示一个新框。

因此,当我按下“按下”键时,它会等待1秒钟并产生一个盒子。当我按“确定”时,它会等待1秒钟并生成另一个,依此类推。知道如何使3个盒子接连产生1个吗?


问题答案:

使用JOptionPane的showX方法时,您将按照文档中的说明创建模式(阻塞和一次)对话框。您可以通过手动创建JOptionPane来直接使用它,而不是使用showX方法。

手动创建一个新的并将其设置为非模态:

optionPane = new JOptionPane(...);
dialog = optionPane.createDialog(null, "the title");
dialog.setModal(false);
dialog.show();


 类似资料:
  • 我正在使用控件。我在每一页中都有一个图像和许多。我使用左、右填充以及在显示选定页面时部分显示下一页和上一页。 我想一次显示多个页面,而正在。一旦滚动停止,您希望仅在中间显示选定页面,并部分显示上一页和下一页(就像滚动开始之前一样)。 我尝试在< code>ViewPager滚动时增加“左”和“右”填充,并在滚动停止时重置< code >填充。增加填充效果很好,我可以一次看到多个页面。但是将填充重置

  • 问题内容: 我想打印一个字符或字符串,例如’-‘n次。 我可以不使用循环就做吗? ..这意味着打印3次,如下所示: 问题答案: Python 2.x: Python 3.x:

  • 问题内容: Swift 2.0的新功能;尝试学习它,对动画感兴趣,并尝试编写一些代码以一次在屏幕上显示一条消息。 我写了这个,它可以工作,但是我不能帮忙,但是我可能无法对CALayers和/或alpha值做些什么?或一些动画小玩意,更值得一去;这感觉和看起来有点笨拙,确实在1977年。 问题答案: 我想Swiftworthy是主观的,但这是另一个基于您代码当前工作方式的实现,该实现将NSTimer

  • 但有没有更简单的解决办法呢?

  • 我有一个小游戏应用程序,它有一个故事板,里面可以创建像“开始”菜单“gamin area scores”这样的场景。我在其中添加了admob横幅视图和州际地图。我的横幅视图运行良好,但我的中间视图只运行了一次。 我在我的viewdidload上加载我的间质,并在调用游戏会话结束的函数中触发它,正如我所说,它只在用户启动另一个游戏并失败时工作一次,这次没有间质(下面的错误)。那么我应该怎么做来修复它

  • 当我将示例添加到我的swagger文档中并在swagger编辑器上进行测试时,它在任何地方都不会显示。有人能给我举一个例子,说明在什么地方有多个例子吗? 它来自:https://swagger.io/docs/specification/adding-examples/ 以下是一个yaml示例,它在在线招摇过市编辑器上不显示任何: