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:
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: