Hallo!
Ich nun nochmal mit einem Problem: im Thread "SVG und Swing" hatte ich schon gepostet, dass ich eine Methode habe, die ein SVGPanel(JPanel) proportional skaliert, wenn sich die Grösse des Frames ändert. Ja - haha - das war nun etwas voreilig von mir. Das funktioniert schon - aber leider entweder nur horizontal oder vertikal, je nachdem ob ich Breite oder Höhe neu berechne und setze. Soweit logisch - aber mir fehlt nun der Ansatz, wie ich das Panel dazu bringe in Breite UND Höhe proportional zu bleiben, wenn der Frame nicht-proportional verändert wird.
Soll heissen: Wenn sich die Grösse des Frames ändert, dann soll sich das Panel anpassen, aber nur so weit, das die Proportionen erhalten bleiben.
Mein Ansatz(nur zur Ansicht - das so nicht funzt, weil
überschreibt ist mir klar):
Bitte nochmal um eure Mithilfe! Ich hab schon einen Knoten im Hirn und renn im Kreis...dabei ist die Lösung wahrscheinlich eh einfach...
Vielen Dank!
lg, Daniela
Ich nun nochmal mit einem Problem: im Thread "SVG und Swing" hatte ich schon gepostet, dass ich eine Methode habe, die ein SVGPanel(JPanel) proportional skaliert, wenn sich die Grösse des Frames ändert. Ja - haha - das war nun etwas voreilig von mir. Das funktioniert schon - aber leider entweder nur horizontal oder vertikal, je nachdem ob ich Breite oder Höhe neu berechne und setze. Soweit logisch - aber mir fehlt nun der Ansatz, wie ich das Panel dazu bringe in Breite UND Höhe proportional zu bleiben, wenn der Frame nicht-proportional verändert wird.
Soll heissen: Wenn sich die Grösse des Frames ändert, dann soll sich das Panel anpassen, aber nur so weit, das die Proportionen erhalten bleiben.
Mein Ansatz(nur zur Ansicht - das so nicht funzt, weil
Java:
svgPanel.setPreferredSize(d2);
Java:
svgPanel.setPreferredSize(d1);
Java:
public void alignControls()
{
//actual size
int height = svgPanel.getSize().height;
int width = svgPanel.getSize().width;
//new proportions for the svgPanel
//400, 272 = preferredSize des Panels
int newWidth = 400*height/272;
int newHeight = 272*width/400;
//schneidet die grafik vertikal nicht ab
Dimension d1 = new Dimension(newWidth, height);
svgPanel.setPreferredSize(d1);
svgPanel.setSize(d1);
//schneidet die grafik horizontal nicht ab
Dimension d2 = new Dimension(width, newHeight);
svgPanel.setPreferredSize(d2);
svgPanel.setSize(d2);
svgPanel.updateUI();
}
Bitte nochmal um eure Mithilfe! Ich hab schon einen Knoten im Hirn und renn im Kreis...dabei ist die Lösung wahrscheinlich eh einfach...
Vielen Dank!
lg, Daniela