2012-01-25 62 views
3

我在寫一個Java應用程序,需要在屏幕分辨率非常高的設備上運行。我需要顯示的唯一UI組件是JFileChooser。如何增加JFileChooser的大小?

由於屏幕分辨率如此之高,FileChooser顯得太小。有一個簡單的命令,我可以使它變得更大嗎?理想情況下,我想保持組件的比例相同,以便圖標的增長與文本一樣多。

此外,重要的是任何更改只能修改我的應用程序。改變圖形大小的全局方法,比如使用較低的分辨率,或者改變系統級的字體大小,對我來說不是一種選擇。

任何想法?

+1

不錯的問題:-)不幸的是,答案是如此之多以至於無法實現:雖然您可以更改對話框的大小,但不會增加使用的字體。即使您更改字體(可以在UIManager中完成),圖標仍然很小(但可以更改爲UIManager中的自定義圖標) – kleopatra

回答

1

您需要選擇合適的layouts來設計用戶界面。看看CodeRanch線程。

+0

感謝您的支持。我剛剛意識到我最初的問題有點過於籠統。我實際上只是試圖調整一個窗口 - 即一個JFileChooser。我剛剛編輯了這個問題來反映這一點。我寧願使用默認的JFileChooser佈局,而不是設計自己的佈局。除了更改佈局外,我還有其他選擇嗎? –

+0

@dB'看來'JFileChooser'暴露了'setSize(int width,int height)'方法。你試過了嗎? –

1

我打算建議將JFileChooser添加到具有合適佈局的容器中,如@AVD所示。例如,ImageDisplay將選擇器添加到BorderLayout.WEST,可以在其中自由垂直增長,同時採用UI委託的首選寬度。在放棄這種方法之前,請驗證您是否無意中擊敗了該設計功能。

如果你真的需要在選擇器的子組件的顯示特性控制,你可能想看看FileBrowser這些變化。

3

我知道答案。只需使用chooser.setPreferredSize(new Dimension(int width,int height));方法,其中選擇器就是您的JFileChooser。

例子:

public class MyFrame extends JFrame(){ 
    JFileChooser chooser = new JFileChooser(); 
    chooser.setPreferredSize(new Dimension(800,600)); 
    //Here show your dialog and do the rest 
} 
+0

不錯的嘗試:-)不幸的是,沒有辦法增加圖標/字體的大小。 – kleopatra

2

這類工作得很好,無論是調整的JFileChooser窗口和字體。

public class JFileChooserArqs { 

    private Font font = new Font("monospaced",Font.BOLD,16); 

    private String fileName; 

    public JFileChooserArqs(String title) 
    { 
     fileName = null; 
     JFileChooser fc = new JFileChooser("."); 
     fc.setPreferredSize(new Dimension(800,600)); 
     fc.setDialogTitle(title); 
     setFileChooserFont(fc.getComponents()); 
     int returnVal = fc.showOpenDialog(null); 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 
      fileName = fc.getSelectedFile().getAbsolutePath(); 
     } 
    } 

    private void setFileChooserFont(Component[] comp) 
    { 
     for(int x = 0; x < comp.length; x++) 
     { 
     if(comp[x] instanceof Container) setFileChooserFont(((Container)comp[x]).getComponents()); 
     try{comp[x].setFont(font);} 
     catch(Exception e){}//do nothing 
     } 
    } 

    public String obtemNomeArquivo() { 
     return fileName; 
    } 
}