Java 一次显示多个消息对话框
我正在尝试制作一个程序,一次显示3个Java 一次显示多个消息对话框,java,swing,timer,joptionpane,Java,Swing,Timer,Joptionpane,我正在尝试制作一个程序,一次显示3个MessageDialog框。我认为,如果将JOPtionPane.showMessageDialog放在actionListner类中,用于swing timer,它将每秒显示一个新的MessageDialog框 下面是我提出的代码: package pracatice; import java.awt.event.*; import javax.swing.*; public class practice extends JFrame {
MessageDialog
框。我认为,如果将JOPtionPane.showMessageDialog
放在actionListner
类中,用于swing 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");
}
}
它工作,但不是我想要的方式。它不是每秒显示一个新框,而是在您按上一个框上的“确定”后1秒显示一个新框
因此,当我按下“按下”按钮时,它会等待1秒钟并生成该框。当我按下“ok”键时,它会等待1秒并生成另一个,以此类推。你知道如何让这三个对话框一个接一个地出现吗?创建对话框的方法(JOptionPane.show…)在用户关闭对话框之前不会返回。如果Swing是单线程的,那么在这种情况发生之前,其他Swing过程都无法进行。如果希望同时打开三个对话框,请使用
非模式对话框 使用JOptionPane的showX方法时,您正在创建文档中所述的模态(阻塞和一次一个)对话。
您可以通过手动创建JOptionPane而不是使用showX方法直接使用它
手动创建一个新的,并将其设置为非模态:
optionPane = new JOptionPane(...);
dialog = optionPane.createDialog(null, "the title");
dialog.setModal(false);
dialog.show();
例如,为什么不在一个对话框中显示多条消息呢。