JPanel verschiebt sich nach add

Status
Nicht offen für weitere Antworten.

Ete

Mitglied
Hallo habe ein kleines problem mit meiner gui.

ich habe ein mainframe über dem mehrere panels angesprochen werden.
wenn ich über meine menüleiste diese panels anspreche, öffnen sie sich richtig angeordnet im fenster.

in den panels habe ich button zum hin und her navigieren die meine methode swichPanels(JPanel newPanel)
ansprechen.
Wenn ich diese methode jedoch aufrufe, erden zwar die komponenten sauber dargestellt, jedoch verschiebt sich das gesammte panel ein stück nach unten,
sodass nach mehrmaliger ausführung die ersten komponenten irgendwann weg sind.

woran kann das denn liegen???
hier mal zwei beispielklassen:

Java:
public class NewTest extends JPanel {

	// Die Klassenattribute
	private static final long serialVersionUID = 1L;
	JPanel c, tab, testName, beschr, center;
	JLabel lab, tName, text;
	JButton cancel, ok;
	JTextField name;
	JTextArea comment;
	TestCase curTest;
    User user = CurrentUser.get();
    
	// Kostruktor
	public NewTest() {
		c = new JPanel();
		c.setBackground(new Color(255,255,255));
		c.setLayout(new OverlayLayout(c));
		tab = new JPanel();
		tab.setBackground(new Color(255,255,255));
		tab.setLayout(new BorderLayout(25, 100));
		lab = new JLabel();
		ImageIcon head = new ImageIcon(getClass().getResource("Testfall anlegen.png"));
		lab.setIcon(head);
		tab.add(lab, BorderLayout.NORTH);

		// Testfallname Komponente
		tName = new JLabel("Testfallname:       ");
		name = new JTextField("", 15);
		testName = new JPanel();// Panel Testfallkomponente
		testName.setBackground(new Color(255,255,255));
		testName.setLayout(new FlowLayout(FlowLayout.LEFT));
		testName.add(tName);
		testName.add(name);

		// Beschreibung Komponente
		text = new JLabel("Beschreibung:     ");
		comment = new JTextArea();
		comment.setMargin(new Insets(5,5,5,5));
		comment.setLineWrap(true);
		JScrollPane logScrollPane = new JScrollPane(comment);
		logScrollPane.setPreferredSize(new Dimension(340,90));
		logScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		beschr = new JPanel();// Panel für Beschreibung Komponente
		beschr.setBackground(new Color(255,255,255));
		beschr.setLayout(new FlowLayout(FlowLayout.LEFT));
		beschr.add(text);
		beschr.add(logScrollPane);

		JPanel middel = new JPanel();
		middel.setLayout(new GridLayout(2,1,0,20));
		middel.setBackground(new Color(255,255,255));
		middel.add(testName);
		middel.add(beschr);
		
		tab.add(middel, BorderLayout.WEST);

		// Button "Abbrechen" und "Bestätigen"
		cancel = new JButton();
		cancel.setBackground(new Color(255,255,255));
		cancel.setBorderPainted(false);
		cancel.setPreferredSize(new Dimension(100,30));
		ImageIcon img = new ImageIcon(getClass().getResource("abbrechen.png"));
		cancel.setIcon(img);
		cancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				swichPanels(new SepTestfall());
			}
		});
		
		ok = new JButton();
		ok.setBackground(new Color(255,255,255));
		ok.setBorderPainted(false);
		ok.setPreferredSize(new Dimension(100,30));
		ImageIcon okPic = new ImageIcon(getClass().getResource("OK.png"));
		ok.setIcon(okPic);
		ok.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(user.getRoleId().getId() > 2) {
					......
                                }
			}
		});

		JPanel buttons = new JPanel();// Buttonpanel
		buttons.setBackground(new Color(255,255,255));
		buttons.setLayout(new BorderLayout());
		buttons.add(cancel, BorderLayout.WEST);
		buttons.add(ok, BorderLayout.EAST);

		tab.add(buttons, BorderLayout.SOUTH);
		tab.setVisible(true);
		c.add(tab);
		this.add(c);
		this.setBackground(new Color(255,255,255));
		this.setVisible(true);
	}
	
	public void swichPanels(JPanel newPanel) {
		c.setVisible(false);
		c.removeAll();
		newPanel.setVisible(true);
		c.add(newPanel);
		c.setVisible(true);
		c.revalidate();
		this.add(c);
		this.revalidate();
	}
}
und die zugehörige Verwaltung:

import ....;

public class SepTestfall extends JPanel {

	// Klassenvariablen
	private static final long serialVersionUID = 1;
	// Panels für Komponenten
	JPanel c, tab, buttons;
	// Label zur Beschriftung
	JLabel lab;
	// Tabelle zur Darstellung der Testfälle
	JTable testTable;
	// Benötigte Buttons
	JButton newTest, confTest, delTest, cancel, showTest, imp, exp;
	// Scrollpane zum Scrollen der Tabelle
	JScrollPane scrollPane;
	Dimension dim; // Legt Groeße fuer ScrollPane fest
	TestCase tf;
    User user = CurrentUser.get(); // hier current User
    String tfName;
    TestCase tView;
    
	// Klassenkostruktor
	@SuppressWarnings("serial")
	public SepTestfall() {
		c = new JPanel();
		c.setBackground(new Color(255,255,255));
		c.setLayout(new OverlayLayout(c));
		tab = new JPanel();
		tab.setBackground(new Color(255,255,255));
		lab = new JLabel();
		ImageIcon head = new ImageIcon(getClass().getResource("Testfallverwaltung.png"));
		lab.setIcon(head);
		
		String[] spalten = { "ID","Name", 
				"Beschreibung", "Ersteller",
				"Erstelldatum", "Letzte Änderung" };
		String[][] zeilen = this.getAllTestCases();
		
		testTable = new JTable(zeilen, spalten);
		testTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		testTable.setModel(new DefaultTableModel(zeilen,spalten) {
			public boolean isCellEditable(int row, int col) {
				return false;
			}
		});
				
		newTest = new JButton();
		newTest.setBackground(new Color(255,255,255));
		newTest.setBorderPainted(false);
		newTest.setPreferredSize(new Dimension(100,30));
		ImageIcon nt = new ImageIcon(getClass().getResource("neu.png"));
		newTest.setIcon(nt);
		newTest.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(user.getRoleId().getId() > 2) {
				    swichPanels(new NewTest());
				} else {
					new Status("Sie haben keine Berechtigung für diese Funktion!");
				}
			}
		});
		
		confTest = new JButton();
		confTest.setBackground(new Color(255,255,255));
		confTest.setBorderPainted(false);
		confTest.setPreferredSize(new Dimension(100,30));
		ImageIcon conT = new ImageIcon(getClass().getResource("bearbeiten.png"));
		confTest.setIcon(conT);
		confTest.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(user.getRoleId().getId() > 2) {
					TestCase t1 = findTestcase(testTable.getSelectedRow());
					NewTest nt = new NewTest();
					nt.curTest = t1;
					nt.name.setText(t1.getName());
					nt.comment.setText(t1.getDescription());
				    swichPanels(nt);
				} else {
					new Status("Sie haben keine Berechtigung für diese Funktion!");
				}
			}
		});
		
		delTest = new JButton();
		delTest.setBackground(new Color(255,255,255));
		delTest.setBorderPainted(false);
		delTest.setPreferredSize(new Dimension(100,30));
		ImageIcon delT = new ImageIcon(getClass().getResource("löschen.png"));
		delTest.setIcon(delT);
		delTest.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(user.getRoleId().getId() > 2) {
					tfName = 
						(String) testTable.getValueAt(testTable.getSelectedRow(), 1);
					deleteTestcase(testTable.getSelectedRow(),0);
				    new Status("Testfall "+tfName+" erfolgreich gelöscht!");
				    swichPanels(new SepTestfall());
				} else {
					new Status("Sie haben keine Berechtigung für diese Funktion!");
				}
			}
		});
		
		cancel = new JButton();
		cancel.setBackground(new Color(255,255,255));
		cancel.setBorderPainted(false);
		cancel.setPreferredSize(new Dimension(100,30));
		ImageIcon img = new ImageIcon(getClass().getResource("abbrechen.png"));
		cancel.setIcon(img);
		cancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				swichPanels(new SepRepaint());
			}
		});
		
		showTest = new JButton();
		showTest.setBackground(new Color(255,255,255));
		showTest.setBorderPainted(false);
		showTest.setPreferredSize(new Dimension(100,30));
		ImageIcon view = new ImageIcon(getClass().getResource("Ansehen.png"));
		showTest.setIcon(view);
		showTest.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				............
			}
		});
		
		imp = new JButton();
		imp.setBackground(new Color(255,255,255));
		ImageIcon inc = new ImageIcon(getClass().getResource("import.png"));
		imp.setBorderPainted(false);
		imp.setPreferredSize(new Dimension(100,30));
		imp.setIcon(inc);
		imp.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(user.getRoleId().getId() > 2){
					swichPanels(new SepImport());
				}else {
					new Status("Sie haben keine Berechtigung für diese Funktion!");
				}
			}
		});
		
		exp = new JButton();
		exp.setBackground(new Color(255,255,255));
		exp.setBorderPainted(false);
		ImageIcon ex = new ImageIcon(getClass().getResource("export.png"));
		exp.setIcon(ex);
		exp.setPreferredSize(new Dimension(100, 30));
		exp.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(user.getRoleId().getId() > 1){
					//Testfall wählen und übergeben
					swichPanels(new SepExport(null,null));
				}else {
					new Status("Sie haben keine Berechtigung für diese Funktion!");
				}
			}
		});

		tab.setLayout(new BorderLayout(0, 50));
		tab.add(lab, BorderLayout.NORTH);
		scrollPane = new JScrollPane(testTable);
		dim = this.getPreferredSize();
		scrollPane.setPreferredSize(new Dimension((int) (dim.getWidth() * 64),
				(int) (dim.getHeight() * 24)));
		scrollPane.setWheelScrollingEnabled(true);
		tab.add(scrollPane);

		// Ausrichtung der Buttons
		buttons = new JPanel();
		buttons.setBackground(new Color(255,255,255));
		buttons.setLayout(new GridLayout(2, 4, 10, 10));
		buttons.add(newTest);
		buttons.add(confTest);
		buttons.add(delTest);
		buttons.add(cancel);
		buttons.add(showTest);
		buttons.add(imp);
		buttons.add(exp);

		// Darstellung der Komponenten
		tab.add(buttons, BorderLayout.SOUTH);
		tab.setVisible(true);
		c.add(tab);
		this.add(c);
		this.setBackground(new Color(255,255,255));
		this.setVisible(true);
	}

	public void swichPanels(JPanel newPanel) {
		c.setVisible(false);
		c.removeAll();
		newPanel.setVisible(true);
		c.add(newPanel);
		c.setVisible(true);
		this.add(c);
	}
}
 
Zuletzt bearbeitet von einem Moderator:

Ete

Mitglied
Hallo habe ein kleines problem mit meiner gui.

ich habe ein mainframe über dem mehrere panels angesprochen werden.
wenn ich über meine menüleiste diese panels anspreche, öffnen sie sich richtig angeordnet im fenster.

in den panels habe ich button zum hin und her navigieren die meine methode swichPanels(JPanel newPanel)
ansprechen.
Wenn ich diese methode jedoch aufrufe, erden zwar die komponenten sauber dargestellt, jedoch verschiebt sich das gesammte panel ein stück nach unten,
sodass nach mehrmaliger ausführung die ersten komponenten irgendwann weg sind.

woran kann das denn liegen???
hier mal zwei beispielklassen:
Java:
public class NewTest extends JPanel {

// Die Klassenattribute
private static final long serialVersionUID = 1L;
JPanel c, tab, testName, beschr, center;
JLabel lab, tName, text;
JButton cancel, ok;
JTextField name;
JTextArea comment;
TestCase curTest;
User user = CurrentUser.get();

// Kostruktor
public NewTest() {
c = new JPanel();
c.setBackground(new Color(255,255,255));
c.setLayout(new OverlayLayout(c));
tab = new JPanel();
tab.setBackground(new Color(255,255,255));
tab.setLayout(new BorderLayout(25, 100));
lab = new JLabel();
ImageIcon head = new ImageIcon(getClass().getResource("Testfall anlegen.png"));
lab.setIcon(head);
tab.add(lab, BorderLayout.NORTH);

// Testfallname Komponente
tName = new JLabel("Testfallname: ");
name = new JTextField("", 15);
testName = new JPanel();// Panel Testfallkomponente
testName.setBackground(new Color(255,255,255));
testName.setLayout(new FlowLayout(FlowLayout.LEFT));
testName.add(tName);
testName.add(name);

// Beschreibung Komponente
text = new JLabel("Beschreibung: ");
comment = new JTextArea();
comment.setMargin(new Insets(5,5,5,5));
comment.setLineWrap(true);
JScrollPane logScrollPane = new JScrollPane(comment);
logScrollPane.setPreferredSize(new Dimension(340,90));
logScrollPane.setHorizontalScrollBarPolicy(ScrollP aneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
beschr = new JPanel();// Panel für Beschreibung Komponente
beschr.setBackground(new Color(255,255,255));
beschr.setLayout(new FlowLayout(FlowLayout.LEFT));
beschr.add(text);
beschr.add(logScrollPane);

JPanel middel = new JPanel();
middel.setLayout(new GridLayout(2,1,0,20));
middel.setBackground(new Color(255,255,255));
middel.add(testName);
middel.add(beschr);

tab.add(middel, BorderLayout.WEST);

// Button "Abbrechen" und "Bestätigen"
cancel = new JButton();
cancel.setBackground(new Color(255,255,255));
cancel.setBorderPainted(false);
cancel.setPreferredSize(new Dimension(100,30));
ImageIcon img = new ImageIcon(getClass().getResource("abbrechen.png")) ;
cancel.setIcon(img);
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
swichPanels(new SepTestfall());
}
});

ok = new JButton();
ok.setBackground(new Color(255,255,255));
ok.setBorderPainted(false);
ok.setPreferredSize(new Dimension(100,30));
ImageIcon okPic = new ImageIcon(getClass().getResource("OK.png"));
ok.setIcon(okPic);
ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(user.getRoleId().getId() > 2) {
......
}
}
});

JPanel buttons = new JPanel();// Buttonpanel
buttons.setBackground(new Color(255,255,255));
buttons.setLayout(new BorderLayout());
buttons.add(cancel, BorderLayout.WEST);
buttons.add(ok, BorderLayout.EAST);

tab.add(buttons, BorderLayout.SOUTH);
tab.setVisible(true);
c.add(tab);
this.add(c);
this.setBackground(new Color(255,255,255));
this.setVisible(true);
}

public void swichPanels(JPanel newPanel) {
c.setVisible(false);
c.removeAll();
newPanel.setVisible(true);
c.add(newPanel);
c.setVisible(true);
c.revalidate();
this.add(c);
this.revalidate();
}
}
und die zugehörige Verwaltung:
Java:
import ....;

public class SepTestfall extends JPanel {

// Klassenvariablen
private static final long serialVersionUID = 1;
// Panels für Komponenten
JPanel c, tab, buttons;
// Label zur Beschriftung
JLabel lab;
// Tabelle zur Darstellung der Testfälle
JTable testTable;
// Benötigte Buttons
JButton newTest, confTest, delTest, cancel, showTest, imp, exp;
// Scrollpane zum Scrollen der Tabelle
JScrollPane scrollPane;
Dimension dim; // Legt Groeße fuer ScrollPane fest
TestCase tf;
User user = CurrentUser.get(); // hier current User
String tfName;
TestCase tView;

// Klassenkostruktor
@SuppressWarnings("serial")
public SepTestfall() {
c = new JPanel();
c.setBackground(new Color(255,255,255));
c.setLayout(new OverlayLayout(c));
tab = new JPanel();
tab.setBackground(new Color(255,255,255));
lab = new JLabel();
ImageIcon head = new ImageIcon(getClass().getResource("Testfallverwaltu ng.png"));
lab.setIcon(head);

String[] spalten = { "ID","Name",
"Beschreibung", "Ersteller",
"Erstelldatum", "Letzte Änderung" };
String[][] zeilen = this.getAllTestCases();

testTable = new JTable(zeilen, spalten);
testTable.setSelectionMode(ListSelectionModel.SING LE_SELECTION);
testTable.setModel(new DefaultTableModel(zeilen,spalten) {
public boolean isCellEditable(int row, int col) {
return false;
}
});

newTest = new JButton();
newTest.setBackground(new Color(255,255,255));
newTest.setBorderPainted(false);
newTest.setPreferredSize(new Dimension(100,30));
ImageIcon nt = new ImageIcon(getClass().getResource("neu.png"));
newTest.setIcon(nt);
newTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(user.getRoleId().getId() > 2) {
swichPanels(new NewTest());
} else {
new Status("Sie haben keine Berechtigung für diese Funktion!");
}
}
});

confTest = new JButton();
confTest.setBackground(new Color(255,255,255));
confTest.setBorderPainted(false);
confTest.setPreferredSize(new Dimension(100,30));
ImageIcon conT = new ImageIcon(getClass().getResource("bearbeiten.png") );
confTest.setIcon(conT);
confTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(user.getRoleId().getId() > 2) {
TestCase t1 = findTestcase(testTable.getSelectedRow());
NewTest nt = new NewTest();
nt.curTest = t1;
nt.name.setText(t1.getName());
nt.comment.setText(t1.getDescription());
swichPanels(nt);
} else {
new Status("Sie haben keine Berechtigung für diese Funktion!");
}
}
});

delTest = new JButton();
delTest.setBackground(new Color(255,255,255));
delTest.setBorderPainted(false);
delTest.setPreferredSize(new Dimension(100,30));
ImageIcon delT = new ImageIcon(getClass().getResource("löschen.png"));
delTest.setIcon(delT);
delTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(user.getRoleId().getId() > 2) {
tfName =
(String) testTable.getValueAt(testTable.getSelectedRow(), 1);
deleteTestcase(testTable.getSelectedRow(),0);
new Status("Testfall "+tfName+" erfolgreich gelöscht!");
swichPanels(new SepTestfall());
} else {
new Status("Sie haben keine Berechtigung für diese Funktion!");
}
}
});

cancel = new JButton();
cancel.setBackground(new Color(255,255,255));
cancel.setBorderPainted(false);
cancel.setPreferredSize(new Dimension(100,30));
ImageIcon img = new ImageIcon(getClass().getResource("abbrechen.png")) ;
cancel.setIcon(img);
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
swichPanels(new SepRepaint());
}
});

showTest = new JButton();
showTest.setBackground(new Color(255,255,255));
showTest.setBorderPainted(false);
showTest.setPreferredSize(new Dimension(100,30));
ImageIcon view = new ImageIcon(getClass().getResource("Ansehen.png"));
showTest.setIcon(view);
showTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
............
}
});

imp = new JButton();
imp.setBackground(new Color(255,255,255));
ImageIcon inc = new ImageIcon(getClass().getResource("import.png"));
imp.setBorderPainted(false);
imp.setPreferredSize(new Dimension(100,30));
imp.setIcon(inc);
imp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(user.getRoleId().getId() > 2){
swichPanels(new SepImport());
}else {
new Status("Sie haben keine Berechtigung für diese Funktion!");
}
}
});

exp = new JButton();
exp.setBackground(new Color(255,255,255));
exp.setBorderPainted(false);
ImageIcon ex = new ImageIcon(getClass().getResource("export.png"));
exp.setIcon(ex);
exp.setPreferredSize(new Dimension(100, 30));
exp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(user.getRoleId().getId() > 1){
//Testfall wählen und übergeben
swichPanels(new SepExport(null,null));
}else {
new Status("Sie haben keine Berechtigung für diese Funktion!");
}
}
});

tab.setLayout(new BorderLayout(0, 50));
tab.add(lab, BorderLayout.NORTH);
scrollPane = new JScrollPane(testTable);
dim = this.getPreferredSize();
scrollPane.setPreferredSize(new Dimension((int) (dim.getWidth() * 64),
(int) (dim.getHeight() * 24)));
scrollPane.setWheelScrollingEnabled(true);
tab.add(scrollPane);

// Ausrichtung der Buttons
buttons = new JPanel();
buttons.setBackground(new Color(255,255,255));
buttons.setLayout(new GridLayout(2, 4, 10, 10));
buttons.add(newTest);
buttons.add(confTest);
buttons.add(delTest);
buttons.add(cancel);
buttons.add(showTest);
buttons.add(imp);
buttons.add(exp);

// Darstellung der Komponenten
tab.add(buttons, BorderLayout.SOUTH);
tab.setVisible(true);
c.add(tab);
this.add(c);
this.setBackground(new Color(255,255,255));
this.setVisible(true);
}

public void swichPanels(JPanel newPanel) {
c.setVisible(false);
c.removeAll();
newPanel.setVisible(true);
c.add(newPanel);
c.setVisible(true);
this.add(c);
}
}

Sorry!!!
 

Ete

Mitglied
Java:
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
import de.bioXML.DB.HibernateUtil;
import de.bioXML.User.User;

public class SepStart extends JFrame {

	private static final long serialVersionUID = 1;
	JPanel c; // Container dieses Frames

	// Klassenobjekte für die Menüs
	SepLogin login = new SepLogin();
	JMenuBar menuBar; // Menueleiste
	JMenu menuD, menuB, menuT, menuP; // Menue
	JMenuItem menuItemX, menuItemI, menuItemE, menuItemLogout; // Menueeintrag Datei
	JMenuItem menuItemBver, menuItemNewUser; // Menueeintrag Benutzer
	JMenuItem menuItemPver, menuItemNewProb; // Menueeintrag Probanden
	JMenuItem menuItemTver, menuItemNewTest, menuItemTestSicht;// Menueeintrag
	JButton button; // Knoepfe der Werkzeugleiste
	JLabel bildLabel; // Label das im Frame erscheinen soll
    Color cWhite = new Color(255,255,255);
    Color clr = new Color(118,175,42);
    User curUser;// = CurrentUser.get();
    
	// Klassenmethode zur Erstellung der Objekteigenschaften
	public SepStart() {
		curUser = login.curUser;
    	c = new JPanel();
    	ImageIcon img = new ImageIcon(getClass().getResource("Hintergrundbild neu.png"));
    	bildLabel = new JLabel();
    	bildLabel.setIcon(img);
    	bildLabel.setVisible(true);
    	c.add(bildLabel);
    	c.setLayout(new OverlayLayout(c));
    	menuBar = new JMenuBar();
    	
    	// Initialisierung der Menüeinträge
    	menuD = new JMenu("Datei");
    	menuD.setForeground(cWhite);
    	menuD.setBackground(clr);
    	menuB = new JMenu("Benutzer");
    	menuB.setForeground(cWhite);
    	menuB.setBackground(clr);
    	menuP = new JMenu("Probanden");
    	menuP.setForeground(cWhite);
    	menuP.setBackground(clr);
    	menuT = new JMenu("Testfall");
    	menuT.setForeground(cWhite);
    	menuT.setBackground(clr);
    	
    	// Initialisierung der Menüunterpunkte
		menuItemI = new JMenuItem("1. Import");
		menuItemI.setBackground(clr);
		menuItemI.setForeground(cWhite);
		menuD.add(menuItemI);
		
		menuItemI.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				swichPanels(new SepImport());
			}
		});

		menuItemE = new JMenuItem("2. Export");
		menuItemE.setBackground(clr);
		menuItemE.setForeground(cWhite);
		menuD.add(menuItemE);
		menuItemE.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				swichPanels(new SepExport(null,null));
			}
		});

		menuItemLogout = new JMenuItem("Logout");
		menuItemLogout.setBackground(clr);
		menuItemLogout.setForeground(cWhite);
		menuD.add(menuItemLogout);
		menuItemLogout.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				HibernateUtil.shutdown();
				dispose();
				new SepStart().setTitle("BioXML");
			}
		});
		
		menuItemX = new JMenuItem("Schließen");
		menuItemX.setBackground(clr);
		menuItemX.setForeground(cWhite);
		menuItemX.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		menuItemX.setActionCommand("close");
		menuD.add(menuItemX);

		menuItemBver = new JMenuItem("Verwaltung");
		menuItemBver.setBackground(clr);
		menuItemBver.setForeground(cWhite);
		menuItemBver.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(login.isVisible() != true)
					swichPanels(new SepUser());
			}
		});
		menuItemNewUser = new JMenuItem("Nutzer neu/ändern");
		menuItemNewUser.setBackground(clr);
		menuItemNewUser.setForeground(cWhite);
		menuItemNewUser.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(login.isVisible() != true)
					swichPanels(new NewUser());
			}
		});
		menuB.add(menuItemBver);
		menuB.add(menuItemNewUser);
		
		menuItemPver = new JMenuItem("Verwaltung");
		menuItemPver.setBackground(clr);
		menuItemPver.setForeground(cWhite);
		menuItemPver.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(login.isVisible() != true)
					swichPanels(new SepProband());
			}
		});
		menuItemNewProb = new JMenuItem("Proband neu/bearbeiten");
		menuItemNewProb.setBackground(clr);
		menuItemNewProb.setForeground(cWhite);
		menuItemNewProb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(login.isVisible() != true)
					swichPanels(new NewProb());
			}
		});
		menuP.add(menuItemPver);
		menuP.add(menuItemNewProb);
	
		menuItemTver = new JMenuItem("Verwaltung");
		menuItemTver.setBackground(clr);
		menuItemTver.setForeground(cWhite);
		menuItemTver.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(login.isVisible() != true)
					swichPanels(new SepTestfall());
			}
		});
		menuItemNewTest = new JMenuItem("Testfall neu/bearbeiten");
		menuItemNewTest.setBackground(clr);
		menuItemNewTest.setForeground(cWhite);
		menuItemNewTest.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(login.isVisible() != true)
					swichPanels(new NewTest());
			}
		});
		menuT.add(menuItemTver);
		menuT.add(menuItemNewTest);
        
		// Menüleiste erstellen
		menuBar.add(menuD);
		menuBar.add(menuB);
		menuBar.add(menuP);
		menuBar.add(menuT);
		menuBar.setBackground(clr);
		setJMenuBar(menuBar);
		
		login.setVisible(true);
		this.add(login);
		this.add(c);
		this.pack();
		this.setResizable(false);
		this.setLocation(75, 75);
		this.setVisible(true);
	}

	
	// Methode zum Mannövrieren im Menü
	public void swichPanels(JPanel newPanel) {
		if(login.isVisible() == false) {
			c.setVisible(false);
			c.removeAll();
			newPanel.setVisible(true);
			c.add(newPanel);
			c.setVisible(true);
			this.add(c);
		}
	}

	// Main-Methode zum Starten der Applikation
	public static void main(String[] args) {
		SepStart st = new SepStart();
		st.setTitle("BIO XML");
		st.setSize(800,603);
		st.setVisible(true);
		st.setResizable(false);
		st.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
}

Du müsstest in den anderen beiden klassen nur noch die Images der buttons mit setText("Irgendwas") ersetzen,
dann müsstest du die Testfallverwaltung öffnen können.
 

Ete

Mitglied
die gui allein ist 2,6 mb groß und mit der datenbank verknüpft, ich kann doch hier nicht das ganze programm posten.

hasst du nicht einen theoretischen ansatz warum sich die panels nach swichPanels() verschieben??

wie gesagt es tritt nur auf wenn du innerhalb der pannels navigierst und nicht über die menübar.
 
G

Gast2

Gast
Du sollst ein KLEINES kompilierbares Programm posten wo dieser Effekt auftritt keiner redet davon dass du dein ganzes Programm posten sollst...
 

Ete

Mitglied
Es wird immer nur swichPanels aufgerufen.

Java:
swichPanels(JPanel newPanel) {
  c.setVisible(false);
  c.removeAll();
  newPanel.setVisible(true);
  c.add(newPanel);
  c.setVisible(true);
  this.add(c);
}
 

Ebenius

Top Contributor
Frage 1: Warum wird in Zeile 7 c zu this hinzugefügt aber vorher nicht entfernt?

Frage 2: Sind die an die swichPanels-Methode (wieso nicht mit switchPanels?) übergebenen Panels denn 100%ig gleich?

Ebenius
 
G

Gast2

Gast
die gui allein ist 2,6 mb groß und mit der datenbank verknüpft, ich kann doch hier nicht das ganze programm posten.

hasst du nicht einen theoretischen ansatz warum sich die panels nach swichPanels() verschieben??

wie gesagt es tritt nur auf wenn du innerhalb der pannels navigierst und nicht über die menübar.

Der theoretischen ansatz ist du benutzt das Layout falsch, aber man kann noch soviel vermuten... ohne Beispiel kann ma jetzt noch ne Weile im Nebel rumraten...
vielleicht hast du auch einfach zuviele panels auf deinem hauptframe...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
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
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
K Swing paintComponent, JPanel auslagern, ChangeEvents AWT, Swing, JavaFX & SWT 7
L GUI - Jpanel - Splitpane will nicht aktualisieren AWT, Swing, JavaFX & SWT 4
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
dat_vin Zeichenbrett (JPanel) AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen


Oben