Pregunta

escribí este código:

public class FileViewer extends JPanel implements ActionListener {

/**
 * 
 */
private static final long serialVersionUID = 1L;

JFileChooser chooser;

FileNameExtensionFilter filter = null;

JEditorPane pane = null;

JTextField text = null;

JButton button;

JTextArea o = null;

URL url;

public FileViewer(JTextArea o) {
    this.o = o;
    setLayout(new FlowLayout(FlowLayout.RIGHT));
    JTextField text = new JTextField("file...", 31);
    text.setColumns(45);
    text.revalidate();
    text.setEditable(true);

    button = new JButton("Browse");
    add(text);
    add(button);
    filter = new FileNameExtensionFilter("html", "html");
    chooser = new JFileChooser();
    chooser.addChoosableFileFilter(filter);

    button.addActionListener(this);

}

public void paintComponent(Graphics g) {
    super.paintComponents(g);
    Graphics2D graphic = (Graphics2D) g;
    graphic.drawString("HTML File:", 10, 20);

}

public void actionPerformed(ActionEvent event) {
    int returnVal = 0;
    if (event.getSource() == button) {
        returnVal = chooser.showOpenDialog(FileViewer.this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            text.setToolTipText(chooser.getSelectedFile().getName());

        } else
            o.append("Open command cancled by user.");
      }
     }
}

Sin embargo, en la línea de: text.setToolTipText(chooser.getSelectedFile().getName()); una NullPointerException es lanzada

Editar He solucionado el problema que he mencionado más arriba, pero no funciona correctamente (que no escribe el nombre del archivo en el texto!): - (

¿Fue útil?

Solución

Contestación de su otro punto:

text.setToolTipText(chooser.getSelectedFile().getName());

¿Era éste el comportamiento previsto? El nombre de archivo sólo aparecerá como información sobre herramientas al pasar el ratón por encima del campo de texto. Para poner el texto directamente en un JTextField debe llamar setText() lugar.

Otros consejos

Se ha declarado text a nivel mundial y ha asignado NULL a ella. En su constructor para FileViewer se declara de nuevo con new, pero esta declaración es local. La variable de referencia en actionPerformed() es el global, que todavía se NULL, para que pueda obtener la excepción. Si cambia

JTextField text = new JTextField("file...", 31);

a

text = new JTextField("file...", 31);

que debe solucionarlo.

sustituir este:

JTextField text = new JTextField("file...", 31);

con esto:

text = new JTextField("file...", 31);

El texto del campo es nulo como en su constructor FileViewer que haya creado una llamada de texto variable local que ha sido añadida a la forma.

Reemplazar

JTextField text = new JTextField("file...", 31);

con

text = new JTextField("file...", 31);

setToolTipText método no establece el texto. Se establece el texto de sugerencia, que se muestra cuando el ratón pasa el texto. Utilizar el método setText.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top