Was ist los mit diesem Code? [geschlossen]
-
11-09-2019 - |
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!): - (
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.