Hallo,
das Letzte Thema war zwar auch schon von mir aber die überschrift passt nichtmehr zu der jetzigen Problematik.
Ich habe nun einen Hauptframe (JFrame) der einen GridBagLayout Layoutmanager beinhaltet. Der Layoutmanager unterteilt den Hauptframe in ein unteren und oberen Balken der durchgängig ist und in der Mitte zwei Balken welche den mittleren bereich in zwei gleich große hälften unterteilt.
Nun möchte ich das die rechte mittlere hälfte in ihrer Breite veränderbar ist. Man kennt es ja man geht mit der Maus auf die Kante zwischen zwei Balken, die Maus wird zu einem Pfeilsymbol und man kann klickennd und ziehennd das Fenster in der breite einstellen.
Ich hab schon überlegt einen JFrame anstatt ein JPanel einzubauen aber dann hätte ich auch wieder in meinem Frame einen Frame der ein kreuz und die anderen Symbole hat. Das will ich so nicht.
Wahlweise könnte ich auch einen Button positionieren mit dem man den Balken zuschalten kann aber das weiss ich wie es geht.
Hier mein Code:
Die Main ist in einer eigenen Klasse und die obere Methode initialisiert den Frame samt inhalt. Die zweite Methode ist eine reine Hilfsmethode um den layoutmanager zu sagen was er zu tun hat.
Vielen Dank für eure Hilfe
das Letzte Thema war zwar auch schon von mir aber die überschrift passt nichtmehr zu der jetzigen Problematik.
Ich habe nun einen Hauptframe (JFrame) der einen GridBagLayout Layoutmanager beinhaltet. Der Layoutmanager unterteilt den Hauptframe in ein unteren und oberen Balken der durchgängig ist und in der Mitte zwei Balken welche den mittleren bereich in zwei gleich große hälften unterteilt.
Nun möchte ich das die rechte mittlere hälfte in ihrer Breite veränderbar ist. Man kennt es ja man geht mit der Maus auf die Kante zwischen zwei Balken, die Maus wird zu einem Pfeilsymbol und man kann klickennd und ziehennd das Fenster in der breite einstellen.
Ich hab schon überlegt einen JFrame anstatt ein JPanel einzubauen aber dann hätte ich auch wieder in meinem Frame einen Frame der ein kreuz und die anderen Symbole hat. Das will ich so nicht.
Wahlweise könnte ich auch einen Button positionieren mit dem man den Balken zuschalten kann aber das weiss ich wie es geht.
Hier mein Code:
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Hauptframe {
GridBagLayout Layout;
GridBagConstraints cons;
JFrame f = new JFrame("Sammelfuchs");
JPanel a = new JPanel();
JPanel b = new JPanel();
JPanel c = new JPanel();
JPanel d = new JPanel();
JPanel e = new JPanel();
public Hauptframe(){
Layout = new GridBagLayout();
a.setBackground(Color.red);
b.setBackground(Color.green);
c.setBackground(Color.yellow);
d.setBackground(Color.white);
e.setBackground(Color.blue);
f.setPreferredSize(new Dimension(1000, 1000));
f.setMaximumSize(new Dimension(1000, 1000));
f.setMinimumSize(new Dimension(600, 600));
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(Layout);
Toolkit.getDefaultToolkit().setDynamicLayout(true);
layerdim(a,0,0,2,1,1,20,1.0,0.0,3);
layerdim(b,0,1,1,1,1,0,5.0,7.0,3);
layerdim(c,1,1,1,1,1,0,5.0,7.0,3);
layerdim(d,0,2,2,1,1,10,1.0,0.0,3);
}
private void layerdim(JPanel a,int gridx, int gridy, int gridwith, int gridheight,int ipadx,int ipady, double weightx, double weighty, int s){
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
}
Layout.setConstraints(a,cons); //Das Objekt wird mit seinen Spezifikationen an das Layout übergeben
f.add(a); //Das Objekt wird in den Frame eingetragen
}
}
Die Main ist in einer eigenen Klasse und die obere Methode initialisiert den Frame samt inhalt. Die zweite Methode ist eine reine Hilfsmethode um den layoutmanager zu sagen was er zu tun hat.
Vielen Dank für eure Hilfe