JFileChooser在选择文件夹名称很长的时候 第二次显示出来的时候会把旁边的的几个按钮给挤到看不见的位置 哎也就是那个显示文件名的组合框在文件名和长的时候也变长了 就把旁边的什么向上啊什么的按钮给搞得看不见了 请问高手有木有办法解决 急~ 分不够我可以加一贴的 
帮UP的也有分~ 谢谢

解决方案 »

  1.   

    可能与你用的laf有关系。
    先确定有没有用laf,如果没用的用jdk本身带的三个依次试试吧。
      

  2.   

    什么是laf?
    我是用JDK自带的文件选择对话框啊
      

  3.   

    >什么是laf?在程序的入口主函数里加上下面的代码试试,
    MetalLookAndFeel laf = new MetalLookAndFeel();
    UIManager.setLookAndFeel(laf);
      

  4.   

    MetalLookAndFeel laf = new MetalLookAndFeel();
        try {
          UIManager.setLookAndFeel(laf);
        }
        catch (Exception e){
          e.printStackTrace();
        }
    JFileChooser fc = new JFileChooser();
        fc.setApproveButtonText(res.getString("Open"));
        fc.setDialogTitle(res.getString("OpenFile"));
        fc.setMultiSelectionEnabled(false);我这样处理了一下 好象不行
      

  5.   

    友情UP 
    UP UP UP ~
      

  6.   

    楼主,我没有观察到你说的现象啊,不过还是写了一个比较笨的方法,你试试吧。
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;public class MyFileChooser
    extends JFileChooser
    {
    public static void main(String[] args)
    {
    final JFileChooser chooser = new JFileChooser();
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

    ArrayList comboBoxList = new ArrayList();
    findComboBox(chooser, comboBoxList);
    for (int i = 0; i < comboBoxList.size(); i++) {
    JComboBox comboBox = (JComboBox) comboBoxList.get(i);
    if (comboBox.getItemAt(0) instanceof File) {
    Dimension mind = comboBox.getMinimumSize();
    mind.width = 0;
    comboBox.setMinimumSize(mind);
    }
    } final JButton btn = new JButton("FileChooser");
    btn.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    chooser.showOpenDialog(btn);
    }
    });
    JFrame f = new JFrame("FileChooserTest");
    f.getContentPane().add(btn, BorderLayout.CENTER);
    f.pack();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }

    private static void findComboBox(Container c, List comboBoxList) 
    {
    int n = c.getComponentCount();
    for (int i = 0; i < n; i++) {
    Component comp = c.getComponent(i);
    if (comp instanceof JComboBox) {
    comboBoxList.add(comp);
    }
    else if (comp instanceof Container) {
    findComboBox((Container) comp, comboBoxList);
    }
    }
    }
    }
      

  7.   

    哇 谢谢楼上的老大 我星期一回公司试试 实在是太感谢了 这个问题困饶了我N久 
    请继续关注 分分不够可以加的
    我还有一帖是关于JAVA SWING在UNXI 下的问题
    我用的JDK是1.3.1 在WINDOWS环境下发现滚动中间滚动键是没有反应的 但是在UNXI下中间键是有反应的 好象等于触发了鼠标右键 问题我还在处理中。
      

  8.   

    哇 高手 问题解决了 
    不过我想问一下这几句是为什么啊?
    for (int i = 0; i < comboBoxList.size(); i++) {
    JComboBox comboBox = (JComboBox) comboBoxList.get(i);
    if (comboBox.getItemAt(0) instanceof File) {
    Dimension mind = comboBox.getMinimumSize();
    mind.width = 0;
    comboBox.setMinimumSize(mind);
    }
    }
    为什么是comboBox.getItemAt(0) instanceof File??
    mind.width = 0;
    comboBox.setMinimumSize(mind);
    ??
      

  9.   

    哦 还有这个老大可以帮忙吗?
    http://community.csdn.net/Expert/topic/4189/4189881.xml?temp=.8932459