IThead 发表于 2013-2-3 10:42:42

java文件选择对话框,文件名不可编辑

思想:获取文件选择对话框中“文件名”显示栏的组件,设置组件不可编辑。

import java.awt.Component;import java.awt.Color;import javax.swing.*;/** * java文件选择对话框 * 文件名不可编辑 */public class JFileChooserUI {    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 instanceof JComponent) {                  label = findLabel((JComponent) comps, 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);    }}
页: [1]
查看完整版本: java文件选择对话框,文件名不可编辑