Datei in TextArea anzeigen

Status
Nicht offen für weitere Antworten.

Eva Zwerg

Mitglied
Hallo,

ich versuche gerade eine TextArea hinzubekommen, die mir Text- bzw. HTML-Dateien, die in einer Tabelle aufgelistet sind, nach Auswahl, anzeigt.

Die Dateien selber kann ich mir auf der Konsole ausgeben lassen, dass heißt der Pfad und die Datei sind jeweils in Ordnung.

Ich bekomme lediglich immer, wenn ich die Datei in die TextArea schreiben will, Fehler. :(

Den ListSelectionListener hab ich so gebaut:
Java:
class SharedListSelectionHandler implements ListSelectionListener {
		public void valueChanged(ListSelectionEvent g) {
			
			if(g.getValueIsAdjusting() == true)
				  return;
			
			int auswahl = DateiTable.getSelectedRow();			
			
			new Textanzeige (e, dir, auswahl);
		}

}

Meine Textanzeige dazu sieht wie folgt aus:
Java:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class Textanzeige {
	
	public Textanzeige(Layout g, File dir, int auswahl){
		
		File[] f = dir.listFiles(new Dateifilter());
		File wahl = f[auswahl];
	
		try {
			FileReader in = new FileReader(wahl);
			
			g.AnzeigePane.read(in, wahl);

			in.close();
		} catch (FileNotFoundException e) {
			System.out.println("Datei nicht gefunden.");
		} catch (IOException e) {
			System.out.println("Fehler beim Lesen der Datei.");
		}

	}

}

Vielleicht weiß einer von euch was ich falsch mache?

Vielen Dank schon einmal für eure Hilfe.
 

ARadauer

Top Contributor
Java:
  g.AnzeigePane.read(in, wahl);
was macht dieser Code?

wenn ich die Datei in die TextArea schreiben will, Fehler
Welchen Fehler?

(musste den beitrag jetzt 5 mal editieren, bis ich die quotes richtig hatte :autsch: ich brauch meinen kaffee)
 

KrokoDiehl

Top Contributor
Aus diesen Code-Schnipseln werde ich nicht wirklich schlau. Das lesen geschieht offenbar in
[JAVA=17] g.AnzeigePane.read(in, wahl);[/code]
und wäre wohl der interessantere Part, aber es sieht sehr ungewöhnlich aus.

Wie wäre es damit, dass du die anzuzeigende Datei einliest und den Text einer JTextArea oder JEditorPane hinzufügst?
Etwas á la:
Java:
public void showFile( File file, JTextArea txtArea ) throws IOException
{
    String         line      = null;
    BufferedReader reader    = new BufferedReader(new FileReader(file));
    StringBuffer   strBuffer = new StringBuffer();
    while ( (line = reader.readLine()) != null )
        strBuffer.append(line);    
    
    reader.close();
    txtArea.setText( strBuffer.toString() );
}
...muss nicht korrekt sein, aber so könnte es aussehen :)
 

Eva Zwerg

Mitglied
Dieser Code
Java:
g.AnzeigePane.read(in, wahl);
soll die Datei in das AnzeigePane im übergebenen Layout g anzeigen. Das funktioniert so auch schon an drei anderen Stellen des Codes z.B. hier:
Java:
g.PfadLabel.setText(p);

Der Code von KrokoDiehl funktioniert leider auch nicht. Bekomme immer noch folgende Fehlerausgabe in der Konsole:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Textanzeige.<init>(Textanzeige.java:32)
at Tabelle$SharedListSelectionHandler.valueChanged(Tabelle.java:40)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Zeile 32 der Textanzeige ist eben der besagte Code-Schnipsel von oben und Zeile 40 in Tabelle ist dieser Schnipsel hier:
Java:
new Textanzeige (e, dir, auswahl);

Wie gesagt, wenn ich mir so
Java:
FileReader in = new FileReader(wahl);
		
BufferedReader br = new BufferedReader(in);
		
while (br.ready()){
           zeile=br.readLine();
           gesamt = gesamt + zeile + "\n";			
}
System.out.print(gesamt);
den Inhalt der Datei auf der Konsole anzeigen lasse, funktioniert alles.
 
G

Gast2

Gast
Versuch doch mal die Methode
Java:
		JTextArea area;
		area.read(Reader, Object);
 

KrokoDiehl

Top Contributor
Na dann geh mal der NullPointerExc. nach.
Java:
new Textanzeige (e, dir, auswahl);
Was passiert denn im Konstruktor von Textanzeige, welche der drei Parameter ist null...
Wenn das Einlesen funktioniert, liegt es an was anderem. So wie es aussieht beim Aufbauen / Erstellen der Textanzeige.

Übrigens ist
Java:
gesamt = gesamt + zeile + "\n";
keine gute Methode Strings zusammenzubauen. Benutzer lieber StringBuffer oder StringBuilder, das ist performanter.
 

Eva Zwerg

Mitglied
Der NullPointerExc. bin ich mal nachgegangen, und natürlich ist das Layout null. Und das leider auch schon im SharedListSelectionHandler. Nur wie bekomm ich das da am besten rein?

Die Tabelle selbst bekommt es nur übergeben.

Java:
public class Tabelle {
	JTable DateiTable;
	File dir;
	Layout e;
	
	
	public Tabelle(Layout g, String p){
		Layout e = g;
		e.PfadLabel.setText(p);
		dir = new File(p);
		FileTableModel model = new FileTableModel(dir);
		DateiTable = new JTable(model);
		DateiTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		e.DateiListePane.setViewportView(DateiTable);
		
		ListSelectionModel listSelectionModel;
		listSelectionModel = DateiTable.getSelectionModel();
		listSelectionModel.addListSelectionListener(new SharedListSelectionHandler());
		DateiTable.setSelectionModel(listSelectionModel);
	}
	
	class SharedListSelectionHandler implements ListSelectionListener {
		public void valueChanged(ListSelectionEvent g) {
			
			if(g.getValueIsAdjusting() == true)
				  return;
			
			int auswahl = DateiTable.getSelectedRow();		
			
			System.out.println(e);
			
			new Textanzeige (e, dir, auswahl);
		}

	}

...
}
 

KrokoDiehl

Top Contributor
Du musst verstehen, dass ich von deiner Programmstruktur wenig Ahnung habe und noch weniger von den dahinterliegenden Überlegungen. Daher weiß ich nichts mit Layout anzufangen, sprich wofür es da ist, was es ist, und warum es nötig ist.
Aber offenbar braucht deine Tabelle ein Layout-Objekt, dass nicht null ist. Daher sehe ich prinzipiell die Sache so, dass Tabelle dann eine Ausnahme werfen muss oder selbst dafür sorgen muss, dass es ein Layout hat. Etwa sowas:
[JAVA=7]
public Tabelle(Layout g, String p){
// Möglk. A: Ausnahme
if (g == null)
throw new NullPointerException("layout ist null");
// Möglk. B: Selbstversorger
if (g == null)
g = new Layout(); //oder wie man es auch immer erzeugt

Layout e = g;
e.PfadLabel.setText(p);
dir = new File(p);
FileTableModel model = new FileTableModel(dir);
DateiTable = new JTable(model);
DateiTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
e.DateiListePane.setViewportView(DateiTable);

ListSelectionModel listSelectionModel;
listSelectionModel = DateiTable.getSelectionModel();
listSelectionModel.addListSelectionListener(new SharedListSelectionHandler());
DateiTable.setSelectionModel(listSelectionModel);
}
[/code]

Du kannst aber auch weiter nach außen gehen und schauen, wo der Tabelle-Konstruktor aufgerufen wird und warum dort das Layout null ist...
 

Eva Zwerg

Mitglied
Wenn ich in Tabelle selbst mir g auf der Konsole ausgeben lasse bekomme ich
Layout[frame0,0,0,630x470,layout=java.awt.BorderLayout,title=Java Datei-Explorer,resizable,normal,defaultCloseOperation=DISPOSE_ON_CLOSE,rootPane=javax.swing.JRootPane[,8,28,614x434,layout=javax.swing.JRootPane$RootLayout, alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
Das ist quasi das was man sonst mit getContentPane() bekommt. Also mein Layout Grundgerüst auf dem ich die Komponenten platzieren kann.
Das heißt das Layout kommt in Tabelle an, muss aber irgendwie an den SharedListSelectionHandler weitergegeben werden, damit der das an Textverarbeitung weitergibt.

Ich hoffe ihr versteht mich?! :bahnhof:
 

KrokoDiehl

Top Contributor
Ach so. Kann es sein dass der SelectionListener schon ziemlich früh aufgerufen wird, sprich während deine GUI noch aufgebaut wird?
Pack um den Aufruf von
Java:
new Textanzeige (e, dir, auswahl);
in
Code:
valueChanged()
doch mal eine if-Abfrage die die Parameter auf null prüft und dann eben nichts macht. Es kann nämlich schon sein, dass beim Erstellen der Tabelle, bzw. beim Setzen eines SelectionListeners dieser aufgerufen wird.
 

Eva Zwerg

Mitglied
Wenn ich mir im SharedListSelectionHandler mit
Code:
System.out.println(e);
das Layout ausgeben lassen will, bekomme ich auch schon null zurück.
Daher geht er in der if- Abfrage erst gar nicht in die else Verzweigung rein und startet Textanzeige.

Muss ich Layout e irgendwie anders deklarieren, damit der SharedListSelectionHandler es kennt?
 

KrokoDiehl

Top Contributor
Holla! Was eine tückische Falle... hab ich auch grade erst bemerkt:
Java:
public class Tabelle {
    JTable DateiTable;
    File dir;
    Layout e; // Attribut e aus der Klasse Tabelle
Java:
    public Tabelle(Layout g, String p){
        Layout e = g; // lokale Variable! also nicht das e aus der Tabelle
        // so muss es sein:
        e = g;
Java:
            System.out.println(e); // e aus der Tabelle
            
            new Textanzeige (e, dir, auswahl); // dito
Du setzt im Konstruktor nicht das Attribut sondern eine lokale Variable! Daher ist es im Listener noch null, weil
Code:
Tabelle.e
nie initialisiert wird.
 

Eva Zwerg

Mitglied
Uff... ich hab mir gedacht, dass ich einen dummen Fehler gemacht habe, aber sooo dumm?? :oops:

Vielen vielen Dank für deine / eure Hilfe! :toll: Es funktioniert jetzt. :applaus:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G textarea.read funzt net in Jar-Datei AWT, Swing, JavaFX & SWT 7
M Text aus Datei in TextArea darstellen AWT, Swing, JavaFX & SWT 7
P Auf Inhalte aus Datei zugreifen AWT, Swing, JavaFX & SWT 13
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
B JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei) AWT, Swing, JavaFX & SWT 15
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
MasterCaution Swing .jar Datei ausführen AWT, Swing, JavaFX & SWT 12
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
L Csv-Datei einlesen AWT, Swing, JavaFX & SWT 34
J *.jar öffnet PDF-Datei nicht AWT, Swing, JavaFX & SWT 35
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
F FXML Datei aus dem SceneBuilder in Eclipse aufrufen AWT, Swing, JavaFX & SWT 1
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
P JavaFX - XCF Datei von Gimp kann nicht angezeigt werden AWT, Swing, JavaFX & SWT 3
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
F Pfad von eingelesener Datei AWT, Swing, JavaFX & SWT 10
Crazynet xls Datei in JTable AWT, Swing, JavaFX & SWT 3
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
G .txt-Datei einlesen /formatieren in JTextfield ?? AWT, Swing, JavaFX & SWT 8
B ST Datei einlesen AWT, Swing, JavaFX & SWT 1
D JavaFX Jar Datei Signieren mit Java 8u45 AWT, Swing, JavaFX & SWT 2
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
A Databinding in FXML-Datei AWT, Swing, JavaFX & SWT 1
H 2D-Grafik .EPS Datei in .PNG konvertieren AWT, Swing, JavaFX & SWT 1
G Datei öffnen Dialog modifizieren AWT, Swing, JavaFX & SWT 13
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
B JAVAFX und CSS Datei in Eclipse AWT, Swing, JavaFX & SWT 4
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2
S Swing Verzeichnis/Datei-Pfad in JTextField schreiben AWT, Swing, JavaFX & SWT 2
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
T Aus JAVA.Jar GUI eine Flash-Datei machen AWT, Swing, JavaFX & SWT 3
A Datei weiterverwenden mit JFileChooser AWT, Swing, JavaFX & SWT 6
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
Iron Monkey Nach Drag & Drop die Datei auf Komponent darstellen AWT, Swing, JavaFX & SWT 2
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
M Datei in jar öffnen AWT, Swing, JavaFX & SWT 11
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
P Neue Datei erstellen in JPanel AWT, Swing, JavaFX & SWT 5
N Speicherpfad für Datei auswählen AWT, Swing, JavaFX & SWT 2
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
E Swing jTextPane Text datei anzeigen AWT, Swing, JavaFX & SWT 7
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
T SWT:Datei speichern / öffnen AWT, Swing, JavaFX & SWT 6
X Applet Java Applet Datei Ausführung AWT, Swing, JavaFX & SWT 9
J Bild aus Datei in BufferedImage laden AWT, Swing, JavaFX & SWT 4
M Swing XML Datei in JTable darstellen + verändern AWT, Swing, JavaFX & SWT 3
D Swing JTable in Datei speichern und laden AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
N Swing TreePath Datei öffnen AWT, Swing, JavaFX & SWT 7
B Datei öffnen Dialog AWT, Swing, JavaFX & SWT 9
kodela Swing JFileChooser und die Datei-Extension AWT, Swing, JavaFX & SWT 3
T Info Datei AWT, Swing, JavaFX & SWT 3
J ImageIcon: ZipException bei ungültiger PNG-Datei AWT, Swing, JavaFX & SWT 2
W jar Datei öffnen AWT, Swing, JavaFX & SWT 4
W TrayIcon mit jdic (Problem bei .jar Datei) AWT, Swing, JavaFX & SWT 3
D Nodes eines statischen JTrees sollen auf Anker (Textmarken) in einer HTML-Datei zeigen AWT, Swing, JavaFX & SWT 8
R Swing XML Datei in JTree, Problem mit Daten einlesen AWT, Swing, JavaFX & SWT 34
M AWT Datei auf server speichern und beschreiben AWT, Swing, JavaFX & SWT 7
P JMenu-Erweiterung in externer Datei AWT, Swing, JavaFX & SWT 5
M Text in txt-Datei in letzte Zeile schreiben? AWT, Swing, JavaFX & SWT 14
X Swing Inhalt einer JEditorPane in Datei abspeichern AWT, Swing, JavaFX & SWT 5
data89 Nimbus Look and Feel als gepackte JAR-Datei AWT, Swing, JavaFX & SWT 3
S Auswahlfenster: Datei beim Doppelklick öffnen AWT, Swing, JavaFX & SWT 8
N Swing Hintergrund Bild in JAR Datei AWT, Swing, JavaFX & SWT 2
I Swing .Jar Datei - funktioniert - nun als Applet AWT, Swing, JavaFX & SWT 13
M Text-Datei in einem JFrame öffen? AWT, Swing, JavaFX & SWT 2
Fadi Images in JAR Datei laden? AWT, Swing, JavaFX & SWT 5
K Hyperlink als Datei identifizieren AWT, Swing, JavaFX & SWT 2
S Jar-Datei funktioniert nicht richtig AWT, Swing, JavaFX & SWT 3
1 Laden einer Datei zur Echtzeit Darstellen AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben