六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 15|回复: 0

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

[复制链接]

升级  9.33%

66

主题

66

主题

66

主题

举人

Rank: 3Rank: 3

积分
228
 楼主| 发表于 2013-2-3 10:42:42 | 显示全部楼层 |阅读模式
思想:获取文件选择对话框中“文件名”显示栏的组件,设置组件不可编辑。

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[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);    }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表