设置文件对话框中的文件名显示区域不可编辑

来源:互联网 发布:标度变换 知乎 编辑:程序博客网 时间:2024/05/14 13:33
package com.test.swing;import java.awt.Component;import javax.swing.JComponent;import javax.swing.JFileChooser;import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.UIManager;/** * 类名: TestFileChooserUI 描述: *  * @author admin * @date Mar 20, 2013 4:11:04 PM *  *  */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);}}