SWING Problem

Doc

Aktives Mitglied
Hallo,
ich hab ein kleines Problem und mach schon länger daran herum, weiss aber leider nicht wie ich das hinbekommen soll. Könnte ne ganz kleine Sache sein, und ich steh vielleicht nur auf dem Schlauch ;(

Ich hab das Programm mal stark abgekürzt und nur die meiner Meinung entscheidenden Dinge stehen gelassen.

Was mein Programm machen soll:

Ich wähle über das Menu eine Text-Datei aus.
Wenn man beim File-Chooser auf "Datei auswählen" drückt wird automatisch folgendes getan:
-Die Zeilenanzahl der Textdatei wird berechnet, für die Größe von zwei Arrays die erstellt werden.
-Die Zeilen werden in ein String-Array geschrieben
-Dann wird ein TextPane-Array erstellt, das mit den Strings aus dem String-Array gefüllt wird
-Das Textpane-Array wird einem Panel hinzugefügt. Dieses Panel bekommt eine ScrollBar und wird in einem GridLayout angezeigt.

Das String-Array und das TextPane-Array werden oben als Klassenvariablen erstellt.

Der "Fehler" der nun auftritt ist, dass ich, wenn ich einen zweiten Text lade, ich mehrere TextPane-Arrays angezeigt bekomme. Ich schätze das Problem liegt daran, dass jedesmal ein neues TextPane-Array erstellt wird und/oder dass jedesmal ein neues Panel erstellt wird. Aber beide kann ich ja erst erstellen, wenn ich weiss wieviele Zeilen mein entsprechender Text hat. Die Zeilenanzahl wird ja erst nach dem Auswählen des Texten berechnet.

Ich hoffe ihr könnt mir folgen. Hier nun mein Code in abstakter Form. An den problematischen Stellen hab ich den Code normal stehen lassen.

Java:
public class Klasse{
	
	JFrame frame = new JFrame(); //das fenster erstellen	
	String[] stringArray;
	int Zeilenanzahl = 0;
	JTextPane[] textpaneArray;
	
	
	public Test(){
			
		//frame-Einstellungen
			//Menubar öffnen und Aktionen ausführen
				
				FileChooser wählt eine Textdatei aus
				
				Zeilenanzahl wird berechnet	
				
				Text wird zeilenweise in ein String-Array geschrieben, dessen Größe über die Zeilenanzahl erstellt wird.
		
				//TextPane Array erstellen, mit der berechneten Zeilenanzahl
				textpaneArray = new JTextPane[Zeilenanzahl];				

				// Das Panel "main" erstellen. In meinem Programm enthält es noch weitere Elemente
				JPanel main = new JPanel(new BorderLayout());
					
				// Das Panel "panel" erstellen. Bekommt eine Spalte und "Zeilenanzahl" Zeilen
				final JPanel panel = new JPanel(new GridLayout(Zeilenanzahl, 1, 0, 0));
				
						
				//TextPanes füllen und dem Panel "panel" hinzufügen
				for (int i = 0; i < Zeilenanzahl; i++) {
						
					textpaneArray[i] = new JTextPane(new HighlightDocument());
					textpaneArray[i].setText(temp = stringArray[i]);
					
					// TextPane dem Panel hinzufügen
					panel.add(textpaneArray[i]);
				}
							
				
				//Scrollbar für Panel
				JScrollPane scrollbar = new JScrollPane(panel); //"panel" ist das innere Panel
				scrollbar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
					
				main.add(scrollbar); //ScrollPane "scrollbar" wird dem äusseren Panel "main" hinzugefügt. "scrollbar" enthält das innere Panel "panel"
				frame.add(main, BorderLayout.CENTER); //Das äussere Panel "main" wird dem Fenster hinzugefügt.
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setLocationRelativeTo(null);
				frame.setVisible(true);
				frame.pack(); //ausrichten

Falls ihr bis hierher dabei geblieben seid, erstmal ein herzliches Danke für eure Unterstützung.
Ich hoffe ihr könnt mir weiterhelfen und Danke schonmal im Vorraus.

Grüße,
Doc
 
Zuletzt bearbeitet:

Doc

Aktives Mitglied
Ich dachte ich hätte es ausführlich genug erklärt :( Wird das Problem nicht klar?

Ich hab mal ein Bild gemacht, was passiert wenn eine zweite Textdatei ausgewählt wird.
Das erste Panel (das kleinere) bleibt bestehen. Es soll aber verschwinden und nur das Zweite angezeigt werden.
Um die einzelnen TextPanes hab ich hier noch einen TitledBorder gemacht.

 
Zuletzt bearbeitet:

pl4gu33

Top Contributor
dann bau doch einfach ein, dass wenn du ein neues lädst, dass du das aktuelle JPanel/TextPane dir geben lässt und panel.setvisible(false) oder panel.disable() machst,... und am Besten das Panel was du addest noch vom Frame oder was auch immer Removen
 
Zuletzt bearbeitet:

Doc

Aktives Mitglied
Wie soll ich das denn machen? Ich überschreibe ja immer das Alte. Ich hab ja keine Unterscheidung zwischen einem bestehenden und dem Neuen. Genau an der Stelle weiss ich nicht was ich machen könnte :-( Das mit remove hab ich schon getestet, ohne Erfolg.
 
Zuletzt bearbeitet:

pl4gu33

Top Contributor
naja überschreiben tust du es ja nicht wirklich, sonst würde er ja nicht die untereinander anordnen zumindest sieht das gerade für mich so aus^^

wenn ich das jetzt richtig verstehe, erzeugst du immer nen neues Textfeld und machst immer
panel.add(textpaneArray);

für jede gelesene Datei,....
du musst entweder das alte Removen mit .remove(...) oder das alte Überschreiben mit dem neuen Inhalt,.... für mich sieht das wie gesagt so aus, als ob du jedes mal nen "neues" addest
 
Zuletzt bearbeitet:

Doc

Aktives Mitglied
Doch, ich überschreibs schon. Nur bleibt das alte Panel weiterhin im Fenster.

Also das kleine ist der erste Text der geladen wurde. Das größere im Hintergrund ist das neue Panel.
 
Zuletzt bearbeitet:

pl4gu33

Top Contributor
also wenn ich das jetzt richtig verstehe(bin gerade etwas Quellcodeblind heute schon zu viel gesehn) addest du ja dein TextPane so auf den Panel mit dem Text, der eingefügt werden soll

Java:
 main.add(scrollbar);

so dann steht da sozusagen deine erste Textbox,.... mit Text nun fügst du eine 2te hinzu und bevor du das machst, nimmst du die alte Referenz also scrollbar die du da oben hinzugefügt hast und machst main.remove(scrollbar) bevor du die neue hinzufügst,.... sollte eigentl. so klappen is zwar nicht schön aber naja^^

und in diesem Beispiel z.b. überschreibst du nichts soweit ich das sehen kann, da du ja immer new machst und so immer ein neues Objekt erzeugst
 
Zuletzt bearbeitet:

Doc

Aktives Mitglied
Klappt leider nicht. Das Problem ist ja, dass ein neues Panel erstellt wird und dieses danach gefüllt. Und dann wirds dem Fenster hinzugefügt. Also hab ich dann zwei.
 

Doc

Aktives Mitglied
Ja, das hab ich schon versucht. Klappt leider nicht. Das bleibt irgendwie im Fenster bestehen.

Und ich kanns ja auch nicht davor disablen oder invisible setzen. Damit beeinflusse ich ja das neue Panel.
Hab echt keine Ahnung wie ich das lösen könnte.
 
Zuletzt bearbeitet:

pl4gu33

Top Contributor
mm okay,... dann wäre es echt hilfreich mal dein ganzen Code zu sehen wie oben beschrieben, wie du es versuchst zurückzusetzen etc.

weil vielleicht überschneidet sich da einfach nur irgendwas oder so,... kannst ihn ja später wieder wegeditieren wenn ihn dann keiner sehen soll ;)

aber das wär echt am einfachsten ;)

oder mach bevor du ein neues auf dem Panel einfügst

Panel.removeall();
 
Zuletzt bearbeitet:

Doc

Aktives Mitglied
hey, das mit removeAll scheint zu funktionieren. zwar mach ichs bei einem panel drüber, das so scheint es zu tun wie ich mir das vorstelle. danke dir!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
E Problem mit Timer und Swing AWT, Swing, JavaFX & SWT 8
S Problem mit Swing Komponenten AWT, Swing, JavaFX & SWT 11
Kr0e RepaintManager-Problem - Swing AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Swing - Fenster friert manchmal ein. AWT, Swing, JavaFX & SWT 7
W Swing Problem: setLocation und setBounds werden ignoriert... AWT, Swing, JavaFX & SWT 3
C Problem mit Swing Application Framework - Projekt beim AWT, Swing, JavaFX & SWT 2
W Swing Problem ( JPanel & JButton ) AWT, Swing, JavaFX & SWT 6
I Swing - Problem mit ActionListener (Programm bleibt stehen) AWT, Swing, JavaFX & SWT 2
W Problem bei awt und Swing mit Schließen des Fensters AWT, Swing, JavaFX & SWT 2
I Swing to iText - Problem mit Schriftarten und Schriftgrößen AWT, Swing, JavaFX & SWT 21
R Swing + Zeichnen Problem AWT, Swing, JavaFX & SWT 7
ModellbahnerTT [gelöst]Frage und Problem zu Swing AWT, Swing, JavaFX & SWT 4
L Swing repaint problem AWT, Swing, JavaFX & SWT 7
G Swing Jframe Problem AWT, Swing, JavaFX & SWT 4
B Problem mit javax.swing.plaf.metal.MetalIconFactory AWT, Swing, JavaFX & SWT 5
G Problem mit Swing bei einem Sudoku Spiel AWT, Swing, JavaFX & SWT 2
H Problem mit Layout Fenstern (Swing) AWT, Swing, JavaFX & SWT 3
W Problem mit Swing-Applet AWT, Swing, JavaFX & SWT 2
B Problem mit ImageIcon/Swing in Linux AWT, Swing, JavaFX & SWT 6
S paint/repaint problem mit awt/swing? AWT, Swing, JavaFX & SWT 2
T JLayeredPane Problem - AWT und SWING Komponente AWT, Swing, JavaFX & SWT 6
T SWING Verständnis Problem AWT, Swing, JavaFX & SWT 4
Z Bei Problem mit Java Swing brauche dringende Hilfe AWT, Swing, JavaFX & SWT 3
ShapeShifter awt zu swing konvertieren problem AWT, Swing, JavaFX & SWT 5
D Swing: GUI-Update-Problem AWT, Swing, JavaFX & SWT 3
L Swing: Toolbar-Problem AWT, Swing, JavaFX & SWT 3
G Problem mit Swing und synchronized AWT, Swing, JavaFX & SWT 3
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben