Frage

Ich schrieb diesen Code:

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.");
      }
     }
}

Aber in der Linie: text.setToolTipText(chooser.getSelectedFile().getName()); eine Nullpointer geworfen

Bearbeiten Ich habe das Problem behoben, die ich oben erwähnt habe, aber es funktioniert nicht richtig (nicht den Namen der Datei in dem Text nicht schreiben!): - (

War es hilfreich?

Lösung

Die Beantwortung Ihrer anderen Punkt:

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

Ist dies das gewünschte Verhalten? Der Dateiname wird nur als Tooltip angezeigt, wenn Sie die Maus über das Textfeld ein. Setzen Text direkt in eine JTextField Sie anrufen sollte setText() statt.

Andere Tipps

Sie haben global deklariert text und zugewiesen NULL zu. In Ihrem Konstruktor für FileViewer erklären Sie es wieder mit new, aber diese Erklärung ist lokal. Die Variable in actionPerformed() verwiesen wird, ist die globale ein, die noch NULL ist, so dass Sie die Ausnahme erhalten. Wenn Sie ändern

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

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

das sollte es beheben.

ersetzen diese:

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

mit dieser:

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

Das Feld Text ist null, wie in Ihrem Fileviewer Konstruktor Sie eine lokale Variable namens Text erstellt haben, die dem Formular hinzugefügt wurde.

Ersetzen

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

mit

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

setToolTipText Verfahren eingestellt nicht den Text. Es setzt den Tooltip-Text, der angezeigt wird, wenn die Maus den Text schwebt. Verwenden Sie setText Methode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top