jfilechooser上有两个text框吗,上面是显示用户选择的文件名,下面是文件选择类型的!   
现在需要让上面的text框成为不可编辑状态,请问各位高手应该怎么弄啊

解决方案 »

  1.   

    看jdk里面那个类的文档,看有没那个框setXXXable的函数用
      

  2.   

    搞定,花了我整整两个半小时!!import java.awt.Component;
    import java.awt.Color;import javax.swing.*;public class TestFileChooserUI {
        private static JLabel findLabel(JComponent comp, String s){
            JLabel label = null;
            if (comp instanceof JLabel) {
                if (((JLabel)comp).getText().equals(s)){
                    label = (JLabel)comp;
                }            
            } else if (comp instanceof JComponent) {
                Component[] comps = comp.getComponents();            
                for (int i=0; i<comps.length; i++) {
                    if (comps[i] instanceof JComponent) {
                        label = findLabel((JComponent)comps[i], s);
                        if (label != null) {
                            break;
                        }
                    }
                }            
            }
            return label;
        }    public static Component getLabelForInChooser(JFileChooser chooser, String key){
            java.util.Locale l = chooser.getLocale();
            String s = UIManager.getString(key, l);
            
            javax.swing.plaf.FileChooserUI ui = chooser.getUI();
            int count = ui.getAccessibleChildrenCount(chooser);
            for (int i=0; i<count; i++) {
                javax.accessibility.Accessible a = 
                    ui.getAccessibleChild(chooser, i);
                JLabel label = findLabel((JComponent)a, s);
                if (label != null) {
                    return label.getLabelFor();
                }
            }
            return null;
        }
        
        public static void main(String[] args) {
            JFileChooser chooser = new JFileChooser("");
            Component comp = 
                getLabelForInChooser(chooser, "FileChooser.fileNameLabelText");
            if (comp instanceof JTextField) {
                JTextField field = ((JTextField)comp);
                field.setEditable(false);            // 随意
                // field.setBackground(Color.WHITE);
            }
            chooser.showOpenDialog(null);
        }
    }