Problem mit JPanel

Serethos

Erfahrenes Mitglied
Servus

hab mir ein Frame gemacht und darauf leg ich mir dann ein JPanel jetzt hab ich nur das problem das ich die Größe dieses JPanel nicht ändern kann. es bleibt in der Größe so wie es will. Ich hab schon alles abgesucht (api, mein progi hundertmal) aber ich find kein fehler.
ok hier ist mein quellcode ich hoffe ihr habt ne lösung für dieses seltsame Problem.
Danke

Code:
 	public static JPanel			  Ergebniss	  = null; //HauptFenster(Ergebnis)
 	private static JScrollPane		jReScrollPane1  = null;
 	public static JTable			  jTable		  = null;
 	public static DefaultTableModel   dtm1			 = null;
 	public static Vector			  columnNames	  = new Vector();
 	
 	
 	
 	public static JPanel getErgebniss(){
 		if(Ergebniss==null){
 			Ergebniss = new JPanel();
 		    System.out.println("Die Größe meines Panels(höhe) "+Ergebniss.getHeight());
 		    System.out.println("Die Größe meines Panels(breite) "+Ergebniss.getWidth());
 
 		    Ergebniss.setBorder(javax.swing.BorderFactory.createTitledBorder
 				    (javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED), 
 				    " Ergebnis ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
 				    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
 			Ergebniss.add(getJReScrollPane1(0));
 		}
 		return Ergebniss;
 	}

so zeigt er mir bei der ausgabe alle beite werte mit 0 an aber es ändert sich die größe nicht
und wenn ich das dazu mache (kann beliebige werte eingeben und seh keine veränderung)

Ergebniss.setLocation(20, 20);
Ergebniss.setSize(220, 330);

freu mich auf jeden tip
 
Kann es sein dass du mit einem LayoutManager Arbeitest?
Soweit ich weiss kannst du dann die grösse und Position nur relativ bestimmen, variert je nach layoutmanager.

Falls du alle Komponenten auf dem Frame von Hand setzten willst, musst du den LayoutManager ausschalten und zwar mit setLayout(null)
 
lege das panel direkt auf das frame. also hab ich wie du gesagt hast das mit dem setLayout(null) gemacht.
es ist was passiert was ich auch sehr gut finde.
1. Ergebniss das Panel bleibt immer noch so groß wie vorher
2. Ergebniss das JScrollpane was ich immer zu einer bestimmten zeit auf das panel lege reagiert jetzt auf die anweisungen wie setbounds();

ok so kann man das lassen.

aber wieso kann ich die größe von dem panel nicht ändern ?
 
jedes panel hat einen eigenen layoutmanager, ich nehme an, du setzt den layoutmanger des panles auf null, daher reagiert die jscollpane jetzt auf setbounds.

du musst den layoutmanager des frames auf null setzten.

Code:
public class TestFrame extends JFrame{
  public TestFrame(){
    super();
    this.getContentPane().setLayout(null);
    JPanel p = new JPanel();
    p.setSize(100, 200);
    p.setLocation(30, 20);
    this.getContentPane().add(p);
  }
}
 
Zeig mal deinen Code, vileicht kann ich dir dann weiterhelfen, ansonsten weiss ich auch nicht mehr weiter
 
Serethos hat gesagt.:
das layout vom contentpane ist auf null gesetzt

Moin,
wie sieht es denn aus, wenn Du stattdessen einen Layoutmanager benutzt? Probier mal aus, wie es sich verhält, wenn Du ein BorderLayout oder GridLayout verwendest.
 
servus also hier ist mein code


Code:
 public class Query{
 public static JPanel getJPanel3() {
 		if (jPanel3 == null) {
 			jPanel3 = new javax.swing.JPanel();
 			jPanel3.setLayout(null);
 			jPanel3.setName("Query");
 			jPanel3.add(getJPanel30(), null);
 			//jPanel3.add(Root.getJPanel20(), null);
 			jPanel3.add(getJPanel1(), null);
 		}
 		return jPanel3;
 	}
 
 	/**
 	 * Diese Methode initialisiert jPanel30:
 	 *  Das Panel bildet den Hauptrahmen im Karteireiter "Datenbankabfragen" 
 	 * @return javax.swing.JPanel	
 	 */	
 	public static JPanel getJPanel30() {
 		if (jPanel30 == null) {
 			jPanel30 = new javax.swing.JPanel();
 			jPanel30.setLayout(null);
 			jPanel30.setSize(920, 600);
 			jPanel30.setLocation(0, 0);
 			jPanel30.setMinimumSize(new java.awt.Dimension(920,580));
 			jPanel30.setPreferredSize(new java.awt.Dimension(920,580));
 			jPanel30.setBorder(javax.swing.BorderFactory.createTitledBorder
 		        (javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED), 
 		    	" Daten abfragen ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
 		    	javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
 		    jPanel30.setFont(new java.awt.Font("Microsoft Sans Serif", java.awt.Font.PLAIN, 12));
 			jPanel30.add(getJTabbedPane300(), null);
 		}
 		return jPanel30;
 	}
 
 	/**
 	 * Diese Methode initialisiert jTabbedPane300:
 	 *  jTabbedPane300 bildet den Container für die Karteireiter "Abfrage" und "Ergebnis" 
 	 * @return javax.swing.JTabbedPane	
 	 */	
 	public static JTabbedPane getJTabbedPane300() {
 		if (jTabbedPane300 == null) {
 			jTabbedPane300 = new javax.swing.JTabbedPane();
 			jTabbedPane300.setSize(908, 573);
 			jTabbedPane300.setLocation(5, 20);
 			jTabbedPane300.addTab("Abfrage", null, getJPanel3000(), null);
 			jTabbedPane300.addTab("Ergebnis", null,Result.getErgebniss(), null);
 		    jTabbedPane300.setFont(new java.awt.Font("Microsoft Sans Serif", java.awt.Font.PLAIN, 12));
 		}
 		return jTabbedPane300;
 	}
 }
 
 
 
 public class Result(){
 public static JPanel getErgebniss(){
 		if(Ergebniss==null){
 			Ergebniss = new JPanel();
 			Ergebniss.setLayout(null);
 			Ergebniss.setLocation(5, 5);
 			Ergebniss.setSize(550, 550);
 		    Ergebniss.setBorder(javax.swing.BorderFactory.createTitledBorder
 				    (javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED), 
 				    " Ergebnis ", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, 
 				    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
 		}
 		return Ergebniss;
 	}
 }

bitte schön
 
Serethos hat gesagt.:
servus also hier ist mein code


Code:
 			jPanel3.setLayout(null);
 			jPanel30.setLayout(null);
 			Ergebniss.setLayout(null);

bitte schön

Du setzt ja alle Layouts auf NULL. Probier doch mal aus was passiert, wenn Du ein Layout verwendest. Hatte ich übrigens auch schon oben empfohlen. :rolleyes:
 
Zurück