Desabilitar o campo de texto (JTextField) do JFileChooser

English version at:
link

Atualmente, estava tentando desabilitar o JTextField de um JFileChooser que estou trabalhando.

A princípio, pensei: "Tranquilo."

Mas, para a minha surpresa vi que não havia nada implementado, mas, como o programador que sou tentei implementar algo:

Tentei o seguinte:
Components[] comp = meuJFileChooser.getComponents();
for(Component c: comp) {
if(c instanceof JTextField) {
c.setVisible(false);
}
}

Bem...isso não funcionou, mas, a idéia seguinte funcionou


Clique aqui para ver a solução.

A dificuldade do problema é obter a referência do JTextField em questão.

2 comentários:

Divino Sérgio disse...

Em busca um solução que "Desabilitar o campo de texto (JTextField) do JFileChooser", achei seu post. E gostei da solução dada no link que passou. Mas encontrei também esta solução:


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();
}
}

Caio Bomfim Martins disse...

Obrigado pelo seu comentário. Essa solução é bem limpa!
Abs

Ratings:

Avaliação deste artigo

Copyright © Programming @ home