Hallo,
Ich habe meinen Hauptframe mit dem GridBagLayout in 4 Fenster unterteilt und wollte nun per Buttonklick eines von diesen Fenstern (Panel b) in der größe ändern.
Das Funktioniert auch Wunderbar.
Wenn man den Button geklickt hat wird das Fenster klein, der Button auf den man geklickt hat wird entfernt und ein neuer Button mit anderer aufschrift wird an seiner stelle angezeigt.
Wenn man nun auf diesen klickt passiert garnichts. Allerdings sollte das Fenster wieder auf seine alte größe wachsen.
Das ist bis auf die Main methode der gesammte Code. Die Main Methode erzeugt bisher nur ein Objekt dieser Klasse.
Vielen Dank für eure Hilfe.
Ich habe meinen Hauptframe mit dem GridBagLayout in 4 Fenster unterteilt und wollte nun per Buttonklick eines von diesen Fenstern (Panel b) in der größe ändern.
Das Funktioniert auch Wunderbar.
Wenn man den Button geklickt hat wird das Fenster klein, der Button auf den man geklickt hat wird entfernt und ein neuer Button mit anderer aufschrift wird an seiner stelle angezeigt.
Wenn man nun auf diesen klickt passiert garnichts. Allerdings sollte das Fenster wieder auf seine alte größe wachsen.
Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Hauptframe implements ActionListener{
public static GridBagLayout layout = new GridBagLayout(); //Layout für den gesammten Frame
public static GridBagConstraints cons;
public static FlowLayout aLayout = new FlowLayout(FlowLayout.LEFT,5,5);
public static JFrame f = new JFrame("Sammelfuchs");
public static JPanel a = new JPanel();
public static JPanel b = new JPanel();
public static JPanel c = new JPanel();
public static JPanel d = new JPanel();
public static JButton sammlungenausblenden = new JButton( "Sammlungen ausblenden" );
public static JButton sammlungeneinblenden = new JButton( "Sammlungen einblenden" );
public static JButton neuesammlung = new JButton( "Neue Sammlung" );
public Hauptframe(){
a.setBackground(Color.red);
b.setBackground(Color.yellow);
c.setBackground(Color.blue);
d.setBackground(Color.white);
f.setMinimumSize(new Dimension(800, 600));
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit.getDefaultToolkit().setDynamicLayout(true);
f.setLayout(layout);
layoutset(0);
menu();
f.add(a);
f.add(b);
a.setLayout(aLayout);
f.add(c);
f.add(d);
sammlungenausblenden.setActionCommand("sammlungenausblenden");
sammlungenausblenden.addActionListener(this);
sammlungeneinblenden.setActionCommand("sammlungeneinblenden");
sammlungenausblenden.addActionListener(this);
buttons(0);
f.validate();
}
//Stellt sie Constraints ein
public static void layerdim(Component a,GridBagLayout c,int gridx, int gridy, int gridwith, int gridheight,int ipadx,int ipady, double weightx, double weighty, int s, int anchor){
cons = new GridBagConstraints(); //Bereinigung der Constrains (Alles auf Null setzen weil neu)
cons.gridx = gridx; //In welcher Spalte startet das Objekt
cons.gridy = gridy; //in welcher Zeile endet das Objekt
cons.gridwidth = gridwith; //Wieviele Spalten nimmt das Objekt ein
cons.gridheight = gridheight; //Wieviele Zeilen nimmt das Objekt ein
cons.ipadx = ipadx; //Wie Breit ist das Objekt Mindestens
cons.ipady = ipady; //Wie Hoch ist das Objekt Mindestens
cons.weightx = weightx; //Prozentualer Wert der Breite
cons.weighty = weighty; //Prozentualer Wert der Höhe
if(s==0){
cons.fill = GridBagConstraints.NONE; //Das Objekt wird nur so gross in seinen Bereich angezeigt wie es ist
}else if(s==1){
cons.fill = GridBagConstraints.HORIZONTAL; //Das Objekt füllt den gesammten Raum Horizontal
}else if(s==2){
cons.fill = GridBagConstraints.VERTICAL; //Das Objekt füllt den gesammten Raum Vertikal
}else if(s==3){
cons.fill = GridBagConstraints.BOTH; //Das Objekt füllt den gesammten Raum Horizontal und Vertikal
}
if(anchor==0){
cons.anchor = GridBagConstraints.CENTER;
}else if(anchor==1){
cons.anchor = GridBagConstraints.NORTH;
}else if(anchor==2){
cons.anchor = GridBagConstraints.EAST;
}else if(anchor==3){
cons.anchor = GridBagConstraints.WEST;
}else if(anchor==4){
cons.anchor = GridBagConstraints.SOUTH;
}else if(anchor==5){
cons.anchor = GridBagConstraints.SOUTHEAST;
}else if(anchor==6){
cons.anchor = GridBagConstraints.NORTHEAST;
}else if(anchor==7){
cons.anchor = GridBagConstraints.SOUTHWEST;
}else if(anchor==8){
cons.anchor = GridBagConstraints.NORTHWEST;
}
c.setConstraints(a,cons);
}
public void menu(){
JMenuBar menuBar = new JMenuBar();
JMenu neu = new JMenu( "Neu" );
menuBar.add( neu );
neu.add(new JMenuItem("Sammlung"));
neu.add(new JMenuItem("Eintrag"));
JMenu ansicht = new JMenu( "Ansicht" );
menuBar.add( ansicht );
ansicht.add(new JCheckBoxMenuItem("Sammlungen einblenden"));
JMenu hilfe = new JMenu( "Hilfe" );
menuBar.add( hilfe );
JMenu ueber = new JMenu( "Über" );
menuBar.add( ueber );
f.setJMenuBar( menuBar );
}
//Korrigiert das Layout nach Buttonklick
public void layoutset(int x){
if(x==0){
layerdim(a,layout,0,0,2,1,1,0,0.0,0.0,3,0);
layerdim(b,layout,0,1,1,1,200,0,0.0,1.0,3,0);
layerdim(c,layout,1,1,1,1,1,1,1.0,0.1,3,0);
layerdim(d,layout,0,3,2,1,1,20,1.0,0.0,3,0);
f.validate();
f.repaint();
}else if(x==1){
layerdim(b,layout,0,1,1,1,0,0,0.0,1.0,3,0);
f.validate();
f.repaint();
}
}
//Ordnet nach Buttonklick die Buttons in Panel a neu an und tauscht sie aus
public void buttons(int x){
if(x==0){
a.removeAll();
a.add(sammlungenausblenden);
a.add(neuesammlung);
a.validate();
f.repaint();
}else if(x==1){
a.removeAll();
a.add(sammlungeneinblenden);
a.add(neuesammlung);
a.validate();
f.repaint();
}
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("sammlungeneinblenden")){
buttons(0);
layoutset(0);
}else if(e.getActionCommand().equals("sammlungenausblenden")){
buttons(1);
layoutset(1);
}
}
}
Das ist bis auf die Main methode der gesammte Code. Die Main Methode erzeugt bisher nur ein Objekt dieser Klasse.
Vielen Dank für eure Hilfe.