JOptionPane 不带按钮

2022-09-02 23:50:48

我需要呈现一条信息消息,需要在屏幕中显示5秒钟,在此期间,用户无法关闭对话框。规范清楚地表明,对话框不应该有任何按钮。有没有办法使用JoptionPane.showMessageDialog,使对话框没有按钮?


答案 1

使用的方式怎么样,也许不是,但是当我们没有按钮或输入文本的地方时,同样的事情(缺点是它可以被用户关闭):showOptionDialogshowMessageDialog

enter image description here

  JOptionPane.showOptionDialog(null, "Hello","Empty?", JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE, null, new Object[]{}, null);

更新

这是另一种方式,它使用和(甚至更好,因为它被用户无法关闭):JOptionPaneJDialog

enter image description here

final JOptionPane optionPane = new JOptionPane("Hello world", JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);

final JDialog dialog = new JDialog();
dialog.setTitle("Message");
dialog.setModal(true);

dialog.setContentPane(optionPane);

dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dialog.pack();

//create timer to dispose of dialog after 5 seconds
Timer timer = new Timer(5000, new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        dialog.dispose();
    }
});
timer.setRepeats(false);//the timer should only go off once

//start timer to close JDialog as dialog modal we must start the timer before its visible
timer.start();

dialog.setVisible(true);

答案 2

看起来大卫想出了一些东西来满足你对“没有按钮”的要求。

话虽如此,听起来你可能需要澄清你真正的要求是什么。是否真的要求对话框不可关闭,或者没有按钮来关闭对话框?JOptionPane和JDialog有一个像标准窗口一样的关闭按钮。


推荐