JPanels in JFrame einfügen

So ... hier jetzt mal ein zwar sehr umständliches Beispiel ... aber es funktioniert und macht genau das was du hier die ganze Zeit versuchst und wir versuchen dir zu erklären.

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame implements ActionListener
{
	private JButton backButton, exitButton, jButtonOne, jButtonTwo, jButtonThree, jButtonFour;
	private JMenuBar jMenuBar;
	private JMenu menu;
	private JMenuItem jMenuItem;
	private JPanel mainPanel, bottomPanel, buttonOnePanel, buttonTwoPanel, buttonThreePanel, buttonFourPanel;
	public static void main(String[] args) { (new Test()).start(); }
	private Test()
	{
		super("TEST");
		jMenuBar=new JMenuBar();
		menu=new JMenu("Hauptfenster");
		jMenuItem=new JMenuItem("EXIT");
		jMenuItem.addActionListener(this);
		jMenuItem.setActionCommand("exitButton");
		menu.add(jMenuItem);
		jMenuBar.add(menu);
		setJMenuBar(jMenuBar);
		setLocation(200, 200);
		setSize(300, 300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		backButton=new JButton("BACK");
		backButton.addActionListener(this);
		backButton.setActionCommand("backButton");
		backButton.setEnabled(false);
		exitButton=new JButton("EXIT");
		exitButton.addActionListener(this);
		exitButton.setActionCommand("exitButton");
		jButtonOne=new JButton("ONE");
		jButtonOne.addActionListener(this);
		jButtonOne.setActionCommand("jButtonOne");
		jButtonTwo=new JButton("TWO");
		jButtonTwo.addActionListener(this);
		jButtonTwo.setActionCommand("jButtonTwo");
		jButtonThree=new JButton("THREE");
		jButtonThree.addActionListener(this);
		jButtonThree.setActionCommand("jButtonThree");
		jButtonFour=new JButton("FOUR");
		jButtonFour.addActionListener(this);
		jButtonFour.setActionCommand("jButtonFour");
		mainPanel=new JPanel();
		mainPanel.setLayout(new GridLayout(2, 2, 10, 10));
		mainPanel.add(jButtonOne);
		mainPanel.add(jButtonTwo);
		mainPanel.add(jButtonThree);
		mainPanel.add(jButtonFour);
		setLayout(new BorderLayout());
		add(mainPanel, BorderLayout.CENTER);
		bottomPanel=new JPanel();
		bottomPanel.add(backButton);
		bottomPanel.add(exitButton);
		add(bottomPanel, BorderLayout.SOUTH);
		buttonOnePanel=new JPanel();
		buttonOnePanel.add(new JLabel("BUTTON ONE"));
		buttonTwoPanel=new JPanel();
		buttonTwoPanel.add(new JLabel("BUTTON TWO"));
		buttonThreePanel=new JPanel();
		buttonThreePanel.add(new JLabel("BUTTON THREE"));
		buttonFourPanel=new JPanel();
		buttonFourPanel.add(new JLabel("BUTTON FOUR"));
	}
	private void start() { setVisible(true); }
	public void actionPerformed(ActionEvent e)
	{
		String com=e.getActionCommand();
		if(com.equals("exitButton"))
			System.exit(0);
		if(com.equals("backButton")) { showMain(); return; }
		if(com.startsWith("jButton"))
		{
			if(com.endsWith("One")) { showOne(); return; }
			if(com.endsWith("Two")) { showTwo(); return; }
			if(com.endsWith("Three")) { showThree(); return; }
			if(com.endsWith("Four")) { showFour(); return; }
		}
	}
	private void showMain()
	{
		getContentPane().removeAll();
		add(mainPanel, BorderLayout.CENTER);
		add(bottomPanel, BorderLayout.SOUTH);
		backButton.setEnabled(false);
		getContentPane().validate();
		update(getGraphics());
	}
	private void showOne()
	{
		getContentPane().removeAll();
		add(buttonOnePanel, BorderLayout.CENTER);
		add(bottomPanel, BorderLayout.SOUTH);
		backButton.setEnabled(true);
		getContentPane().validate();
		update(getGraphics());
	}
	private void showTwo()
	{
		getContentPane().removeAll();
		add(buttonTwoPanel, BorderLayout.CENTER);
		add(bottomPanel, BorderLayout.SOUTH);
		backButton.setEnabled(true);
		getContentPane().validate();
		update(getGraphics());
	}
	private void showThree()
	{
		getContentPane().removeAll();
		add(buttonThreePanel, BorderLayout.CENTER);
		add(bottomPanel, BorderLayout.SOUTH);
		backButton.setEnabled(true);
		getContentPane().validate();
		update(getGraphics());
	}
	private void showFour()
	{
		getContentPane().removeAll();
		add(buttonFourPanel, BorderLayout.CENTER);
		add(bottomPanel, BorderLayout.SOUTH);
		backButton.setEnabled(true);
		getContentPane().validate();
		update(getGraphics());
	}
}

@Rest
Ja Leute ich weis ... der Code ist nicht der Beste ... aber er sollte nur aufzeigen wie einfach es ist das zu erreichen was TO wollte ...
Natürlich kann man sich den ganzen Duplicated-Code sparen ... aber ich glaube das würde TO dann wirklich nicht mehr verstehen.


EDIT 2 : Wenn du jetzt aus Gnatz deinen Code rausnimmst ... dann schreib bitte etwas SINNVOLLES. *sowas wie "GELÖSCHT" oder so*
 
Zuletzt bearbeitet von einem Moderator:
Danke schön
jetzt funktioniert mein programm
ich wollte nur wissen was macht genau (validate) und (update) da hatte ich probleme****
 
@javama
Reiss dich bitte zusammen. In diesem Forum wird auf die Gross- und Kleinschreibung geachtet.
Die Leute helfen dir hier aus freien Stuecken und 'opfern' dafuer ihre Freizeit.
Tausende von * oder Saetze in Komplett Grossbuchstaben
ES GEHT JETZT DARUM; DASS ES BEI JEDEM BUTTON DIE JEWEILIGE PANEL ANGEZEIGT WIRD:
kannst du dir da bitte sparen. Grossschreiben wird als schreien interpretiert und du willst doch niemanden anschreien der dir helfen will?
 
was macht genau validate() und update(Graphics)

Dazu klickst du einfach auf meine Signatur "Java 7 API" klickst dich über java.awt zu Component durch ... scrollst bei der Methoden-Liste ganz nach unten ... da hast du dann die Methoden Component.validate() und Component.update(Grphics).
Zur genaueren Erklärung klickst du dann einfach drauf.
 

Neue Beiträge

Zurück