我希望用户只从现有文件中选择文件,并且不想让他输入文件名.
那么我们如何在JFileChooser中禁用文件输入字段?
谢谢.
我认为你真正想要的是让用户选择一个现有的文件.
您可以为JFileChooser编写一个动作侦听器来检查并确保该文件存在.
您仍然希望用户能够键入文件输入字段,以便限制JFileChooser中显示的内容,
例如,如果用户键入*.txt,则仅.txt显示文件.如果用户键入one*,则仅显示以字母1开头的文件.
小智 6
完全同意吉尔伯特.但在奇怪的情况下,如果你真的想要你所要求的:在plaf实现中定义的那个文本字段,你可以使用,比如说反射,来获取它并改变它,或者你可以尝试通过子组件迭代,希望只有JTextArea才是你要找的人.以下示例使用反射并适用于Metal外观:
import java.awt.Frame; import java.lang.reflect.Field; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.plaf.metal.MetalFileChooserUI;public class FileChooser {
public static void main(String[] args) throws Exception{ Frame f = new JFrame(); JFileChooser jFileChooser = new JFileChooser(); MetalFileChooserUI ui = (MetalFileChooserUI)jFileChooser.getUI(); Field field = MetalFileChooserUI.class.getDeclaredField("fileNameTextField"); field.setAccessible(true); JTextField tf = (JTextField) field.get(ui); tf.setEditable(false); tf.setEnabled(false); jFileChooser.showDialog(f, "Select"); f.dispose(); }
}