按代码处理JDialog,不要让用户关闭它

时间:2012-04-19 19:18:04

标签: java swing dispose jdialog

我有一个简短的代码,我想处理一个对话框,但不希望用户能够关闭它,它只是不起作用,请帮助我。

    import javax.swing.*;
    public class Processing extends JOptionPane{

    JDialog jd;
    public Processing(){
        super(null, JOptionPane.DEFAULT_OPTION, 
                  JOptionPane.INFORMATION_MESSAGE, null, new Object[]{});
        Icon processPic = new ImageIcon("C:\\Users\\Judit\\Desktop\\Mesekocka3D"
                + "\\externals\\pics\\szamitas.gif");

        setMessage(processPic);
        jd = createDialog("Számítás");

        jd.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        jd.setVisible(true);
        jd.dispose();
    }   
}

这就是我的代码现在的样子,我使用Jdialog而不是Joptionpane,我应该写更多字符让网站接受我的编辑吗?

import javax.swing.*;



public class Mifasz
{
 private static class Processing extends JDialog{

public Processing(){
    Icon processPic = new ImageIcon("C:\\Users\\Judit\\Desktop\\Mesekocka3D"
            + "\\externals\\pics\\szamitas.gif");
    JLabel label = new JLabel(processPic);
    add(label);
    setTitle("Számítás");
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);        
    setSize(400, 70);
    setLocation(330, 300);
    setModal(true);
    setVisible(true);
    dispose();
}       
}

  public static void main(String[] args)
  {
    Processing pc = new Processing();
  }

}

4 个答案:

答案 0 :(得分:2)

  

我想在短时间内为用户显示一个gif,它就像一个装载屏幕,我不希望他对应用程序做任何事情,所以我使用joptionpane,但我也想禁用X按钮,所以我使用jdialog,因为我没有找到禁用optionpane的X按钮的选项。

1)您可以使用未装饰的JDialog#setUndecorated(true);

2)将gif作为Icon添加到JLabel

3)使用Swing Timer进行计时,来自Swing Timer的输出可以是Swing Action,而actionPerformed放置JDialog#setVisible(fasle);

修改

  

我想阻止它,并且需要在用户点击JCombobox项目时多次使用

1)只创建一次JDialog,你只重用那个

2)在actionPerformed put JDialog#setVisible(fasle);

中运行Swing Timer#repeat(false)并预期延迟

3)来自Item JComboBox

中所选IconJLabel)更改myLabel#setIcon(myAnotherGIF)的事件

4)在invokeLaterJDialog#setVisible(true);

5)不需要任何其他步骤

仅在特殊情况下

6)你必须致电

myIcon.getImage().flush();
myLabel.setIcon(myIcon);

如果Icon's

中的JLabel重新绘图有问题

答案 1 :(得分:1)

您需要致电

jd.setVisible(false);

然后

jd.dispose();

答案 2 :(得分:0)

您想要做的是启动画面,请参阅this

答案 3 :(得分:0)

好的,所以我找到了一个非常简单的解决方案: 我只是在处理时禁用主机。 How to make a JFrame Modal in Swing java