JPanel aktualisieren mit validate() !

Status
Nicht offen für weitere Antworten.
B

Bw4n4

Gast
Hi,
hatte den Post schon in einem vorhandenen Thread gepostet, aber an dem war leider schon ein Häckchen dran, deswegen hat ihn scheints keiner mehr beachtet...

.....

hab per forensuche den Code hier gefunden, er funktioniert auch, aber mein contentPane repaintet sich plötzlich nicht mehr nach dem Doppelklick. Das neue JPanel wird erst angezeigt wenn ich z.B. die Fenstergröße ändere.

Komischerweise reicht bei allen meinen anderen Fenstern der Aufruf von validate() aus um den Inhalt neu zu zeichnen !!

Liegt es daran, dass ich validate() innerhalb des MouseEvent aufrufe?

Warum krieg ich ne NullpointerException wenn ich getRootPane().validate() oder getRootPane().getContentPane.validate() aufrufe? Was spricht dagegen?


Hier der Code:

Code:
class blabla extends JPanel
{
......	

resultTablejTable = new JTable();
            TableModelSearchCustomer model = new TableModelSearchCustomer(rowData);
            resultTablejTable.setModel(model);

resultTablejTable.addMouseListener( new MouseAdapter()
            {
                 public void mouseClicked( MouseEvent doubleClick )
                 {
                      if( doubleClick.getClickCount() == 2 )
                      {
                         int rowClicked = resultTablejTable.rowAtPoint(doubleClick.getPoint());
                         int customerID = (Integer)resultTablejTable.getValueAt(rowClicked, 0);
                         JPanel changeCustomerGUI = new ChangeCustomerGUI(_server, customerID);
                          getRootPane().setContentPane(changeCustomerGUI);
                          validate();
                      }
                   
                 }
                });   
}
}


Danke schon mal;
Werd echt oft fündig hier, wenn ich auf Probleme stoß *thumbs up*
 
B

Bw4n4

Gast
is doch gar nicht so schwer,

da ist ne Tabelle => da gibts Zeilen drin ;-)
wenn ich auf eine Zeile doppelklicke, wird eine neue Instanz einer Klasse erstellt, die von JPanel erbt.
Dieses neue JPanel soll jetzt neuer contentPane werden, also die Tabelle ersetzen.
Jetzt muss das ganze nur noch neu gezeichnet werden (damit man auch den neuen Inhalt sehen kann).
In anderen Teilen der GUI ging das wunderbar mit validate() nach dem setContentPane(neues JPanel), nur in obig beschriebenem Fall wird der neue Inhalt des Fensters erst sichtbar wenn ich dessen Größe ändere. ich würde gerne wissen warum und auf welche weise sonst ich den contentPane refreshen kann ?
 
S

SlaterB

Gast
das hast du schon erzählt, ja,

aber ich kann mir in meinem Kopf nicht alle Vorgänge vorstellen, gar die Lösung im Schlaf ertasten,
daher bitte Code ;)
 

Bwana

Mitglied
ok dann hier halt ein tolles KSKB:


Code:
public class Main {

	public static void main(String[] args) {


		MyWindow myWindow = new MyWindow();
		myWindow.setVisible(true);

	}

}


Die Klasse mit dem Fenster die von JFrame erbt

Code:
import javax.swing.JFrame;
import java.awt.Dimension;

public class MyWindow extends JFrame {
	
	public MyWindow()
	{
		super();
		setSize(new Dimension(300, 300));
		setContentPane(new MyContent());
	}
}

Hier der erste Content mit der Tabelle in der man doppelklicken kann
Code:
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JPanel;
import javax.swing.JTable;


public class MyContent extends JPanel {

	
	private String data[][] = 
	{
			{"Max" , "Mustermann" , "Musterstraße 1a" }		
	};
	private MyModel model = new MyModel(data); 
	private JTable resultjTable = new JTable(model);
	
	public MyContent()
	{
		setLayout(new FlowLayout());
		add(resultjTable);

		resultjTable.addMouseListener( new MouseAdapter()
		{
			  public void mouseClicked( MouseEvent doubleClick )
			  {
				    if( doubleClick.getClickCount() == 2 )
				    {
				    	JPanel myContent2 = new MyContent2();
		    	 		getRootPane().setContentPane(myContent2);
		    	 		validate(); // <------------------------------------------ Mein Problem
				    }
				  
			  }
			 });	
		
	}
}

Der 2. Content der nach dem Doppelklick eigentlich erscheinen sollte, dies aber erst tut, wenn man z.B. die Fenstergröße verändert.
Code:
import javax.swing.JLabel;
import javax.swing.JPanel;


public class MyContent2 extends JPanel {


	private JLabel content2 = new JLabel("mein 2. Inhalt");
	
	public MyContent2()
	{
		add(content2);
	}
}

zu guter letzt noch das model für die tabelle aus content1
Code:
import javax.swing.table.DefaultTableModel;

public class MyModel extends DefaultTableModel {

	private Object[][] _data;
	private int length;
	
	public MyModel(Object[][] data)
	{
		super();
		try
		{
			_data = data;
			length = data.length;
		}
		catch(NullPointerException npe)
		{
			
		}
		
	}
	
	public int getRowCount()
	{
		return length;
	}
	
	public String getColumnName(int column)
	{
	      switch(column)
	      {
	      case 0: return "Vorname";
	         case 1: return "Nachname";
	         case 2: return "Geburtsdatum";
	         default: return null; 
	         
	      }
	}
	      
	public int getColumnCount()
	{
		return 3;
		
	}
	
	public Object getValueAt(int row, int col)
	{		
		return _data[row][col];
		 
	}
	
    public boolean isCellEditable(int row, int column)
    {
       return false;
    }    
	
}

Das Beispiel sollte komilierbar sein und zeigt, dass er den contentPane erst von content1 auf content2 umstellt, wenn man z.B. die Fenstergröße ändert...
nochmal meine frage: wie kann ich das repainten ?

MFG
Bwana
 
S

SlaterB

Gast
bisschen groß für ein KSKB ;),
gehts nur bei JTable nicht und sonst schon oder wie?

ich hab jetzt allerdings einfach nur
Code:
JRootPane rp = getRootPane();
rp.setContentPane(myContent2);
rp.validate();
getestet und schon ging es bei mir..,
sorry wenn's dann viel Lärm um kleine Änderung war ;)
 
G

Guest

Gast
jo ging nur bei dem doppelklick in nem JTable nich, ansonsten schon ;-)

jetzt funktionierts wunderbar !! :toll:

aber warum krieg ich ne exception wenn ich direkt getRootPane().validate() aufrufe,
aber krieg keine und alles läuft gut wenn ich den Aufruf vorher in ne Variable rp packe ? nur so zum verständnis...

thx nochmal
 
B

Beni

Gast
Anonymous hat gesagt.:
aber warum krieg ich ne exception wenn ich direkt getRootPane().validate() aufrufe,
aber krieg keine und alles läuft gut wenn ich den Aufruf vorher in ne Variable rp packe ? nur so zum verständnis...

Weil "rp.setContentPane(myContent2); " den Baum der Componenten verändert: da das RootPane nur ein ContentPane haben kann, wird das alte ContentPane entfernt. Deine Tabelle ist aber auf dem alten ContentPane, das nun keinen Vater mehr hat... deshalb führt "getRootPane" ins Leere.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L GUI - Jpanel - Splitpane will nicht aktualisieren AWT, Swing, JavaFX & SWT 4
Y Swing Aktualisieren eines JPanel mit ArrayList im TableLayout AWT, Swing, JavaFX & SWT 2
P JPanel aktualisieren AWT, Swing, JavaFX & SWT 8
M Wie, ein JTable / JPanel / JContentPane aktualisieren? AWT, Swing, JavaFX & SWT 3
W JPanel mit Labeln aktualisieren AWT, Swing, JavaFX & SWT 7
M JPanel aktualisieren AWT, Swing, JavaFX & SWT 3
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing JPanel ueber komplette Form legen AWT, Swing, JavaFX & SWT 1
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
S jpanel anchor bottom AWT, Swing, JavaFX & SWT 1
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
F JPanel "verschmelzen" GridLayout AWT, Swing, JavaFX & SWT 10
B Dropdown "Einstellungen" auf JPanel, transparent AWT, Swing, JavaFX & SWT 1
D GlassPane für JPanel AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
T Swing Index für Komponente in JPanel? AWT, Swing, JavaFX & SWT 6
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
O 2D-Grafik Zeichenfläche auf JPanel AWT, Swing, JavaFX & SWT 4
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben