2013-03-23 27 views
0

我已經創建了一個基本的揮杆程序,它在通過JFileChooser選擇它後在JDialog框中顯示圖像。我在對話框中使用了JScrollPane,在窗格中使用了圖像添加爲圖標的JLabel我的自定義JDialog出現最小化並且JScrollPane的滾動消失

以下是我已經習慣了構建對話框,並對其內容的代碼,對象已經被初始化用一個簡單的新的呼叫:

jDialog1.setTitle("Image"); 
    jDialog1.setModal(true); 

    jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 
    jScrollPane2.setViewportView(jLabel1); 

的Netbeans已用於構建GUI。

以下是我已經用於加載並顯示圖像的代碼:

int rval = jFileChooser1.showDialog(this, "Show"); 
    File f = jFileChooser1.getSelectedFile(); 
    jDialog1.setTitle(jDialog1.getTitle() + " : " + f.getName()); 
    try { 
     BufferedImage bf = ImageIO.read(f); 
     jLabel1.setIcon(new ImageIcon(bf)); 
    } 
    catch (IOException ioe) { 
    } 
    jDialog1.setLocationRelativeTo(null); 
    jDialog1.setVisible(true); 
    jDialog1.pack(); 

儘管圖像被加載和顯示時,麻煩的是

  • 我的對話框出現在在左上角最小化的形式,我不得不拖動它的角落來查看圖像。包括相同的圖像。

    enter image description here

  • 滾動窗格的水平滾動前的對話框是完全伸展的,並且圖像被完全顯示消失長。雖然垂直滾動條的行爲良好。

我已經嘗試設置大小,都JDialogJLabel的首選大小,但問題依然存在。

Thanx提前!

注意:水平滾動條問題通過在對話框中使用pack()方法解決,但最小化對話框仍然存在。此外,該對話框現在也出現在屏幕的中心。

+3

嘗試調用包( )創建的JDialog並在屏幕中心顯示它,只需在您的JDialog對象上調用setLocationRelativeTo(null)即可。 – 2013-03-23 13:49:44

+0

@GyuriMajercsik thanx,解決了水平滾動條的問題,並且對話框出現在屏幕的中心,但對話框仍處於最小化的形式。 – 2013-03-25 03:09:13

+0

@GyuriMajercsik在問題中添加了最小化對話框的圖像。 – 2013-03-25 03:14:27

回答

3

序列方法調用事項模態對話框,你必須使對話框可見之前調用包(因爲否則包將不執行關閉對話框前):

dialog.pack(); 
// Edit: manually double its size: 
dialog.setSize(dialog.getPreferredSize().width * 2, dialog.getPreferredSize().height * 2); 
dialog.setVisible(true); 
+0

謝謝,幫助。現在出現一個體面大小的對話框,其中包含我的圖像,而不是我在問題中提到的最小化對話框。請注意,有什麼方法可以使它更大,甚至可以是全屏對話框? – 2013-03-30 12:03:28

+0

另外,爲什麼包裝需要做之前,使其可見?我的意思是,當它已經顯示在屏幕上時,對話框不能根據'pack()'方法的規格改變它的外觀嗎? – 2013-03-30 12:05:37

相關問題