2012-04-19 44 views
3

我有一個簡短的代碼,我想處理一個對話框,但不希望用戶能夠關閉它,它只是不工作,幫助我請。通過代碼配置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(); 
    } 

} 
+0

你爲什麼將'JDialog'與'JOptionPane'(這是'JComponents'的同一個家族)混合在一起,你真的想做什麼,(忽略'不希望用戶能夠關閉它'),其中一個是沒用的,使用JDialog或JOptionPane :-) – mKorbel 2012-04-19 20:02:02

+0

我想爲用戶短時間顯示一個gif,就像一個加載屏幕,我不希望他做任何事情所以我使用joptionpane,但我也想禁用X按鈕,所以我使用jdialog,因爲我沒有找到禁用optionpane的X按鈕的選項。 – 2012-04-19 20:05:52

回答

1

你需要調用

jd.setVisible(false); 

然後

jd.dispose(); 
+1

仍然沒有好處:S – 2012-04-19 19:32:00

2

我想展現給用戶一個GIF的時間很短,它就像一個loadingscreen,我不想讓他對應用程序做任何事情,所以我使用joptionpane,但我也想禁用X按鈕,所以我使用jdialog,因爲我沒有找到一個選項來禁用OPTIO npane的X按鈕。

1),可以使用未修飾的JDialog#setUndecorated(true);

2)把gif作爲IconJLabel

3)使用Swing Timer用於定時,從搖擺定時器ooutput可以是Swing Action和內部actionPerformedJDialog#setVisible(fasle);

編輯

我想阻止它,它需要使用許多倍的JComboBox項

1)創建的JDialog在用戶點擊一次次,你會重用只有

2)運行的Swing計時器#重複(錯誤的)與預期延遲,在actionPerformedJDialog#setVisible(fasle);

3)事件從選擇ItemJComboBox)變化IconJLabelmyLabel#setIcon(myAnotherGIF)

4)內部invokeLater包裝JDialog#setVisible(true);

5)任何其他步驟不需要

只有在特殊情況下

6)你必須調用

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

在您遇到的情況Icon's重新粉刷在JLabel

+0

@Ferenc Dajka在這裏看到我的答案,我的問題你想用圖像顯示這個JDialod多少次,如果在應用程序生命期間只有一次,那麼你不需要以某種方式回覆。 .. – mKorbel 2012-04-19 20:16:59

+0

JDialog不會像joptionpane那樣屏蔽屏幕,我想阻止它,並且需要多次用戶點擊JCombobox項目時纔會使用它。 – 2012-04-19 20:18:54

+0

@Ferenc Dajka'JDialog#setModal(true);'或者有ModalityTypes,但可能並不重要... – mKorbel 2012-04-19 20:20:17

0

您要做的是閃屏,請參閱this