如何让我的 JOptionPane 对话框在 10 秒后消失
How to make my JOptionPane dialogue box disappear after 10 seconds
我在 Java 中有一个方法可以捕获异常并在对话框中显示。我只想让对话框持续 10 秒,然后应该会消失。我的代码如下
private void errorpopup(Exception m)
{
JOptionPane.showMessageDialog(
null,
new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>", JOptionPane.ERROR_MESSAGE));
}
请提出宝贵建议,在此先致谢。
SwingUtilities.getWindowAncestor(component)是returns组件的第一个祖先window的方法。
您可以将它与您的 JLabel(作为组件)结合使用,以获取对 JOptionPane 消息对话框的引用 Window,然后您可以在设置为 10 秒的计时器方法中关闭该对话框;像这样:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class TestClass {
public static void main(String[] args)
{
errorpopup(new Exception("Error"));
}
private static void errorpopup(Exception m)
{
JLabel messageLabel = new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>");
Timer timer = new Timer(10000,
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent event)
{
SwingUtilities.getWindowAncestor(messageLabel).dispose();
}
});
timer.setRepeats(false);
timer.start();
JOptionPane.showMessageDialog(null, messageLabel, "Error Window Title", JOptionPane.ERROR_MESSAGE);
}
}
或者,这个 link 有另一个如何完成的例子:
How to close message dialog programmatically?
您需要做一些工作才能使其符合您的目的,但它展示了如何向用户显示倒计时,这很简洁。
我在 Java 中有一个方法可以捕获异常并在对话框中显示。我只想让对话框持续 10 秒,然后应该会消失。我的代码如下
private void errorpopup(Exception m)
{
JOptionPane.showMessageDialog(
null,
new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>", JOptionPane.ERROR_MESSAGE));
}
请提出宝贵建议,在此先致谢。
SwingUtilities.getWindowAncestor(component)是returns组件的第一个祖先window的方法。
您可以将它与您的 JLabel(作为组件)结合使用,以获取对 JOptionPane 消息对话框的引用 Window,然后您可以在设置为 10 秒的计时器方法中关闭该对话框;像这样:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class TestClass {
public static void main(String[] args)
{
errorpopup(new Exception("Error"));
}
private static void errorpopup(Exception m)
{
JLabel messageLabel = new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>");
Timer timer = new Timer(10000,
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent event)
{
SwingUtilities.getWindowAncestor(messageLabel).dispose();
}
});
timer.setRepeats(false);
timer.start();
JOptionPane.showMessageDialog(null, messageLabel, "Error Window Title", JOptionPane.ERROR_MESSAGE);
}
}
或者,这个 link 有另一个如何完成的例子: How to close message dialog programmatically?
您需要做一些工作才能使其符合您的目的,但它展示了如何向用户显示倒计时,这很简洁。