如何增加JFileChooser的大小?

4
我正在编写一个Java应用程序,需要在分辨率非常高的设备上运行。我只需要显示一个JFileChooser界面组件。
由于屏幕分辨率太高,FileChooser 显示得太小了。有没有一个简单的命令可以让它变大?理想情况下,我希望保持组件的比例不变,这样图标和文本同样变大。
另外,重要的是任何更改都只修改我的应用程序。全局更改图形大小的方法,例如使用较低的分辨率或更改系统范围内的字体大小对我来说都不是选项。
有什么想法吗?

1
好问题 :-) 不幸的是,答案需要做很多工作,几乎不可能:虽然你可以改变对话框的大小,但这并不会增加所使用的字体。即使你改变了字体(可以在UIManager中完成),图标仍然会很小(也可以在UIManager中更改为自定义图标)。 - kleopatra
4个回答

5

这个类很好用,可以调整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;
    }
}

2
我知道答案。只需要使用chooser.setPreferredSize(new Dimension(int width,int height));方法,其中chooser是您的JFileChooser。
例如:
public class MyFrame extends JFrame(){
  JFileChooser chooser = new JFileChooser();
  chooser.setPreferredSize(new Dimension(800,600));
  //Here show your dialog and do the rest
}

1
很不错的尝试 :-) 不幸的是,这对增加图标/字体的大小没有任何作用。 - kleopatra

1

你需要选择适合的布局来设计用户界面。可以看一下CodeRanch的帖子。


谢谢您。我刚刚意识到我的原始问题有点太笼统了。实际上,我只是想调整一个窗口的大小——即JFileChooser。我已经大幅编辑了问题以反映这一点。我更喜欢使用默认的JFileChooser布局而不是设计自己的布局。除了更改布局之外,我还有其他选择吗? - dB'
@dB' 看起来 JFileChooser 暴露了 setSize(int width, int height) 方法。你试过了吗? - ee.

1

我原本想建议像 @AVD 建议的那样,将 JFileChooser 添加到一个具有合适布局的容器中。例如,ImageDisplay 将选择器添加到 BorderLayout.WEST,这样它就可以在垂直方向上自由增长,同时采用 UI 代理的首选宽度。在放弃这种方法之前,请验证您没有无意中破坏该设计特性。

如果您真的需要控制选择器子组件的显示特性,您可能需要查看这些 FileBrowser 的变体。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接