Infomatrixx
Grünschnabel
Hallo zusammen,
ich bin gerade dabei eine Komponenten zu schreiben, bei der man eine Containerstruktur vrgrößern und verkleinern können soll.
Das heißt ich habe zum Beispiel sowas:
-> JPanel (Verwendet verschiedene LayoutManager)
---> JTextField
---> JButton
---> JPanel (Verwendet verschiedene LayoutManager)
-------> JButton
Nun war mein Ansatz zu sagen, dass ich bei einer Resize Operation Beim Rootelement (hier: JPanel) beginne und dann rekursiv über getComponents mich nach unten arbeite.
Bei jeder Komponente ändere ich nun die Größe immer um den gleichen Faktor mit setPreferedSize. Leider scheint das nicht zu funktionieren. Also nach dem Ändern der Komponente und dem erneuten Aufruf von getPreferedSize bekomme ich die geänderten Werte zurück, aber auf der Oberfläche hat sich nichts verändert.
Hier mal der Codeschipsel:
Jemand eine Idee ?
Gruß,
Fabian
ich bin gerade dabei eine Komponenten zu schreiben, bei der man eine Containerstruktur vrgrößern und verkleinern können soll.
Das heißt ich habe zum Beispiel sowas:
-> JPanel (Verwendet verschiedene LayoutManager)
---> JTextField
---> JButton
---> JPanel (Verwendet verschiedene LayoutManager)
-------> JButton
Nun war mein Ansatz zu sagen, dass ich bei einer Resize Operation Beim Rootelement (hier: JPanel) beginne und dann rekursiv über getComponents mich nach unten arbeite.
Bei jeder Komponente ändere ich nun die Größe immer um den gleichen Faktor mit setPreferedSize. Leider scheint das nicht zu funktionieren. Also nach dem Ändern der Komponente und dem erneuten Aufruf von getPreferedSize bekomme ich die geänderten Werte zurück, aber auf der Oberfläche hat sich nichts verändert.
Hier mal der Codeschipsel:
Code:
private boolean calculate(JComponent comp, double factor, double lastFactor) {
Component[] children = comp.getComponents();
System.out.println("----\n" + comp.toString());
System.out.println("Before: " + comp.getPreferredSize());
Dimension dimension = comp.getPreferredSize();
double oldWidth = (double)dimension.getWidth();
double oldHeight = (double)dimension.getHeight();
double newWidth = (oldWidth / lastFactor) * factor;
double newHeight = (oldHeight / lastFactor) * factor;
comp.setPreferredSize(new Dimension((int)newWidth, (int)newHeight));
System.out.println("After: " + comp.getPreferredSize());
for(int i=0; i<children.length; i++) {
calculate((JComponent)children[i], factor, lastFactor);
}
return true;
}
Jemand eine Idee ?
Gruß,
Fabian