LayoutManager Panel verschieben sich

Hutzli

Aktives Mitglied
hi, habe mal ne frage..

ich hab mit einem panel tool, das ein lehrer von mir geschrieben hat, zwei Panels erstellt und einen ActionListener auf die Buttons hinzugefügt. Durch Klicken auf einen Button sollte es mir das eine Panel löschen und das zweite Hinzufügen. Das macht es auch, nur verschiebt es die Panels immer ein Stück nach unten, bis plötzlich Teile des Inhaltes nicht mehr zu sehen sind, also Buttons oder Text Felder verschwinden.
Hier mal ein Auszug aus dem ActionListener, der das erste Panel zum zweiten wechselt.

Java:
lPanel.setVisible( false );
lPanel.removeAll();
lPanel.add( new LernUmgebungStartPanel( ) );
lPanel.setVisible( true );

Und hier noch die Klasse LernUmgebungStartPanel:
Java:
package drawLernUmgebung;

import helper.Helper;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.Panel;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import action.ActionGuiLern;
import ch.jmildner.tools.MyPanel;

public class LernUmgebungStartPanel extends Panel{

	JButton lLos = new JButton( "Los" );
	JButton lZurueck = new JButton( "Zurück" );
	
	JTextArea lListe = new JTextArea( 20,0 );
	
	JScrollPane sp = new JScrollPane( lListe );
	
	JComboBox lAuswahl = new JComboBox( new Object[ ]{ "1 - ","2 - ","3 - ",
													 "4 - ","5 - ","6 - ",
													 "7 - ","8 - ","9 - ",
													 "10 - ","11 - ","12 - ",
													 "13 - ","14 - ","15 - ",
													 "16 - ","17 - ","18 - ",
													 "19 - ","20 - ","21 - ",
													 "22 - ","23 - ","24 - ",
													 "25 - ","26 - ","27 - ",
													 "28 - ","29 - ","30 - ",
													 "31 - ","32 - ","33 - ",
													 "34 - ","35 - ","36 - ",
													 "37 - ","38 - ",
													 } );
	
	JLabel lTitel = new JLabel( "BLABLABLABALABASDSFDSFDSg" );
	
	Helper lHp = new Helper( );
	
	private MyPanel lPanel = new MyPanel( 12,10,false );

	
	public LernUmgebungStartPanel()
	{
		setPanel( );	
		setHelper( );
		setText( );
		setAction( );
		
	}

	private void setAction( ) 
	{
		ActionGuiLern lAgl = new ActionGuiLern( lLos, lZurueck, lAuswahl, lPanel );
	}

	private void setText( ) 
	{
		
		lTitel.setFont( new Font( "Comic Sans MS Fett", Font.BOLD, 21 ) );
	}

	private void setHelper( ) 
	{
		lHp.setUnwritable( lListe );
		
		lHp.setHotKey( lLos, 'L');
		lHp.setHotKey( lZurueck, 'Z');
		
	}

	private void setPanel( ) 
	{
		
		lPanel.add( lTitel,1,1,2);
		lPanel.add( sp,3,3,9 );
		lPanel.add( lLos,8,7,1 );
		lPanel.add( lAuswahl,8,3,4);
		lPanel.add( lZurueck,8,11,1);
		
		this.add( lPanel );
		
		
	}


}

Und noch die Klasse GuiStartPanel, die das erste Panel erstellt...
Java:
package draw;

import helper.Helper;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Font;
import java.awt.Panel;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

import action.ActionGuiStart;
import ch.jmildner.tools.MyPanel;

public class GuiStartPanel extends Panel 
{
	JButton lLernUmgebung = new JButton( "Lernumgebung" );
	JButton lInfo = new JButton( "Info" );
	JButton lBeenden = new JButton( "Beenden" );
	
	JLabel lStartLabel = new JLabel( "BLABLABLABALABASDSFDSFDS" );
	
	JTextArea lWelcome = new JTextArea( 15,0 );
	
	private MyPanel lPanel = new MyPanel( 12,10,false );
	
	Helper lHp = new Helper( );
	


	public GuiStartPanel( )
	{
		setPanel( );	
		setHelper( );
		setText( );
		setAction( );
		
	}

	private void setText() {
		
		GuiStartPanelSetText lSetText = new GuiStartPanelSetText( );
		
		lSetText.setText( lWelcome );
		
	}

	private void setHelper() 
	{
		lHp.setHotKey( lLernUmgebung, 'L' );
		lHp.setHotKey( lInfo, 'I' );
		lHp.setHotKey( lBeenden, 'B' );
	
		lHp.setUnwritable( lWelcome );
	}

	private void setAction() 
	{	
		ActionGuiStart lAgs = new ActionGuiStart( lLernUmgebung, lInfo, lBeenden, lPanel );
	}

	private void setPanel() 
	{

		lStartLabel.setFont( new Font( "Comic Sans MS Fett",Font.BOLD, 21 ) );
		
		lPanel.add( lWelcome,2,2,9 );
		
		lPanel.add( lLernUmgebung,3,1,1 );
		lPanel.add( lInfo,4,1,1 );
		
		lPanel.add( lBeenden,10,10,1 );
		
		lPanel.add( lStartLabel,1,1,2 );
		
		this.add( lPanel );
		
		
	}
	
}

Es wird die Klasse LernUmgebungStartPanel aufgerufen, die das zweite Panel zeichnen soll. Und kommt mir bitte nicht mit CardLayout, das ist mir zu umständlich...

Danke schon mal für eure Hilfe 😉
 
AWT- und Swing-GUI-Komponenten sollten auf keinen Fall mit einander vermischt werden!
Die
Code:
setVisible()
-Aufrufe kannst du entfernen, die sind hier überflüssig.
Code:
remove()
oder
Code:
removeAll()
ist schon als Alternative zum CardLayout OK.
Aber nach dem Hinzufügen musst du die GUI neu berechnen und zeichnen lassen.
Also noch
Code:
validate()
aufrufen!
 
hallo und danke für die Antwort...


Nur leider funktioniert das ganze nich wirklich ;(

das erste panel wird weiterhin angezeigt und das zweite drückts dazwischen

hat sonst noch jemand eine Idee??

ps. hab mal beim gewechselten Panel auf Vollbild gedrückt, dann wird das neue Panel komplett angezeigt,
verschiebt sich aber immer noch nach unten
 
Zuletzt bearbeitet:
also, wenn ich starte sieht das so aus: (Die Guis sehen schlecht aus, das weiss ich, werde ich auch noch ändern, ist eh nur um zu üben)

vorher.jpg

wenn ich auf "Lernumgebung" drücke sieht das so aus:

zwischen.jpg

und wenn ich auf "Zurück" drücke und wieder auf "Lernumgebung" usw... siehts dann einmal so aus:

nachher.jpg

danke schon mal für eure Hilfe 🙂
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben