3

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

    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

4 回答 4

2

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

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

2)作为gif图标放入JLabel

3) 使用Swing Timer进行计时,Swing Timer 的输出可以是Swing Action和 inside actionPerformedputJDialog#setVisible(fasle);

编辑

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

1)只创建一次JDialog,你只会重用它

actionPerformed2) 运行 Swing Timer#repeat(false)并期待延迟,输入JDialog#setVisible(fasle);

3) 事件从选定的Item( JComboBox) 更改IconJLabel myLabel#setIcon(myAnotherGIF)

4) 内invokeLater包装JDialog#setVisible(true);

5) 不需要任何其他步骤

仅在特殊情况下

6)你必须打电话

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

Icon's如果您在重新粉刷时遇到问题JLabel

于 2012-04-19T20:14:32.223 回答
1

你需要打电话

jd.setVisible(false);

进而

jd.dispose();
于 2012-04-19T19:21:15.310 回答
0

你想要做的是一个启动画面,看这个

于 2012-04-19T23:51:27.293 回答
0

好的,所以我找到了一个非常简单的解决方案:我只是在处理时禁用大型机。 如何在 Swing java 中制作 JFrame 模态

于 2012-04-20T17:27:53.717 回答