Hinzugefügte Componente ist inaktiv

Status
Nicht offen für weitere Antworten.

pixel-shock

Aktives Mitglied
Hi zusammen,

ich habe ein kleines Problem.

Ich habe ein JFrame, das eine JScrollPane enthält, die wiederum ein JPanel enthält.
Beim Klicken auf einen JButton soll dieses JPanel aus der JScrollPane gelöscht werden und ein neues JPanel gesetzt werden, was auch klappt, aber alle Elemente im neuen JPanel sind zwar grafisch gesehen vorhanden, aber völlig inaktiv.

Ich habe schon verschiedene Varianten probiert (validate, paintAll etc), aber nichts führt zum Erfolg.

Kennt jemand das Problem und kann mir evtl. einen Tipp geben?

LG & DANKE
Tino
 

Verjigorm

Top Contributor
Lass dir von den Panelkomponenten dochmal zurückliefern, ob sie enabled sind oder nicht, dann weisst du es
 

Templon

Bekanntes Mitglied
revalidate(), invalidate() und validate() in Verbindung mit repaint() schon ausprobiert? (Bin mir nicht sicher welches von denen gebraucht wird, schon zu lange nicht mehr gebraucht :))

repaint() muss aber danach noch aufgerufen werden.

Mfg Templon.
 

pixel-shock

Aktives Mitglied
Wenn ich repaint() aufrufe, sind alle Componenten weg ... das ist auch was, was ich noch nicht so ganz nachvollziehen kann.
Zumal ich vorher explizit aufrufe paintAll(scrollPane.getGraphics());

LG
Tino
 
S

SlaterB

Gast
ich denke nicht, dass validate() oder das Einfügen oder sonst ähnliches etwas mit dem Enabled-Status zu tun hat,

ein Beispielprogramm wäre für so etwas seltsames sehr interessant

> .getGraphics()

eine der großen Unheil-Quellen für alle denkbaren Probleme in Swing,
als Anfänger NIE aufrufen!
 

Verjigorm

Top Contributor
*lach* dann liegt dein Fehler dadrin, dass dein neues Panel nicht "richtig" hinzugefügt wurde.

Du musst den Viewport der JScrollPane auf das neue Panel setzen.

Dein "inaktives" Panel ist das Alte, welches nur noch nicht neugezeichnet (und somit komplett entfernt) wurde.
 

pixel-shock

Aktives Mitglied
Ah alles klar, am setViewportView lag es - DANKE DIR!

Code:
				NewsContainer nc = new NewsContainer(); // JPanel				
				JScrollPane mainScrollPane = this.mainFrame.getMainScrollPane();
				Container contentPane = this.mainFrame.getContentPane();				
				contentPane.remove(mainScrollPane);							
				mainScrollPane = new JScrollPane(nc);
				mainScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
				mainScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
				mainScrollPane.setViewportView(nc);	
				contentPane.add(mainScrollPane, BorderLayout.CENTER);				
				mainScrollPane.repaint();

LG
Tino
 

pixel-shock

Aktives Mitglied
Mist, das wars leider immer noch nicht ... da spinnt die "Grafik" immernoch rum:

Code:
		public void actionPerformed(ActionEvent ae) {
			if (ae.getActionCommand() == "News") {
				
				NewsContainer nc = new NewsContainer(); // JPanel				
				JScrollPane mainScrollPane = this.mainFrame.getMainScrollPane();
				Container contentPane = this.mainFrame.getContentPane();				
				
				contentPane.remove(mainScrollPane);		
				
				mainScrollPane = new JScrollPane(nc);
				mainScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
				mainScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
				
				contentPane.add(mainScrollPane, BorderLayout.CENTER);	
				mainScrollPane.setViewportView(nc);	
				mainScrollPane.validate();
				repaint();
				
			} else if (ae.getActionCommand() == "Categories") {
				CatContainer nc = new CatContainer(); // JPanel				
				JScrollPane mainScrollPane = this.mainFrame.getMainScrollPane();
				Container contentPane = this.mainFrame.getContentPane();				
				
				contentPane.remove(mainScrollPane);		
				
				mainScrollPane = new JScrollPane(nc);
				mainScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
				mainScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
				
				contentPane.add(mainScrollPane, BorderLayout.CENTER);	
				mainScrollPane.setViewportView(nc);	
				mainScrollPane.validate();
				repaint();
				
			}
		}

LG
tino
 

Verjigorm

Top Contributor
NewsContainer nc = new NewsContainer();
mainScrollPane.setViewportView(nc);

sollte reichen, alles andere ist doch unnütz
da brauchste kein (re)validate oder sonstwas
 

pixel-shock

Aktives Mitglied
ok, teste ich gleich mal :)
Und was ich noch übersehen habe war, dass die JScrollPane im MainFrame ja noch nicht überschrieben wurde mit der neuen, die beim ButtonListener erzeugt wird ;)

LG
Tino
 

pixel-shock

Aktives Mitglied
Ja da hast du Recht - hab ich rausgenommen.
So ist einfacher und sauberer ... DANKE Dir, habe wohl mal wieder zu kompliziert gedacht.

Eine andere Frage habe ich noch.

Gibt es eine Möglichkeit einem GridLayout zu sagen, wie Hoch die Zeilen sein sollen, dieses automatische Resize an Fenstergröße kann ich leider garnicht gebrauchen.

LG
Tino
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S CombinedDomainXYPlot und dynamisch hinzugefügte subplots: Darstellungsprobleme AWT, Swing, JavaFX & SWT 3
Q Swing Fenster updaten - Hinzugefügte Komponenten darstellen AWT, Swing, JavaFX & SWT 3
S JTree hinzugefügte Knoten anzeigen AWT, Swing, JavaFX & SWT 9
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Graphics2D Componente Drehen AWT, Swing, JavaFX & SWT 2
C Componente in Container (inkl. "Untercontainer") suchen und zurückgeben AWT, Swing, JavaFX & SWT 3
N Componente und Actionlistener AWT, Swing, JavaFX & SWT 5
P Swing Componente über Rahmen hinaus zeichnen AWT, Swing, JavaFX & SWT 2
M Swing Image in JPanel als Componente AWT, Swing, JavaFX & SWT 2
J Swing JPanel mit Hintergrund zeigt componente nicht AWT, Swing, JavaFX & SWT 6
H Feststellen ob eine Componente sichtbar (im Vordergund) ist? AWT, Swing, JavaFX & SWT 2
J Name von einer Componente AWT, Swing, JavaFX & SWT 3
K Listeners und das Ende einer Componente AWT, Swing, JavaFX & SWT 4
G SWT SWT Componente gesucht AWT, Swing, JavaFX & SWT 2
L Größe einer Componente herausfinden AWT, Swing, JavaFX & SWT 2
R Position einer Componente? AWT, Swing, JavaFX & SWT 9
G Componente Zeile fixieren AWT, Swing, JavaFX & SWT 3
S Funktion nur ausführen, wenn Maus über Componente ist AWT, Swing, JavaFX & SWT 2
S Componente mehrmals verwenden ? AWT, Swing, JavaFX & SWT 3
ARadauer swing html wysiwyg componente AWT, Swing, JavaFX & SWT 6
S Listener übergeordneter Componente Blockiert AWT, Swing, JavaFX & SWT 6
E JFrame Componente aus einer anderen klasse disposen AWT, Swing, JavaFX & SWT 3
G Farbe der Markierung einer Componente ändern AWT, Swing, JavaFX & SWT 2
O Graphics erstellt Componente scheinbar nicht richtig AWT, Swing, JavaFX & SWT 23
B Vorhandenes Graphicsobjekt auf Componente zeichnen AWT, Swing, JavaFX & SWT 19
S [S] custom tree componente AWT, Swing, JavaFX & SWT 8
B componente drucken AWT, Swing, JavaFX & SWT 3
C Componente verkleinern lasse wenn die Frame verkleinert wird AWT, Swing, JavaFX & SWT 2
G Eigene Componente in jScrollView einbetten AWT, Swing, JavaFX & SWT 6
K property panel und selektion einer componente in panel AWT, Swing, JavaFX & SWT 5
R Componente in JTabbedPane unsichtbar AWT, Swing, JavaFX & SWT 4
Z Swing Wenn JFrame inaktiv - Soundbenachrichtigung bei Aktion AWT, Swing, JavaFX & SWT 2
L Fenster inaktiv setzen / deaktivieren (unable to close window) AWT, Swing, JavaFX & SWT 16
P JDialog Close-Button inaktiv machen AWT, Swing, JavaFX & SWT 1
J wie wird GridBagLayout inaktiv? AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben