Ich bin auf der Suche nach Möglichkeiten zum Vergrößern einer Java Swing-Anwendung. Das bedeutet, dass ich alle Komponenten in einem bestimmten JPanel um einen bestimmten Faktor skalieren möchte, so als würde ich einen Screenshot der Benutzeroberfläche erstellen und eine "Bildskalierung" anwenden. Die Schriftgröße sowie die Größe von Ankreuzfeldern, Textfeldern, Cursorn usw. müssen angepasst werden. Es ist möglich, eine Komponente, die durch Anwenden der Transformationen auf einer Grafik zu skalieren Objekt:Zoom in Java Swing Anwendung
protected Graphics getComponentGraphics(Graphics g) {
Graphics2D g2d=(Graphics2D)g;
g2d.scale(2, 2);
return super.getComponentGraphics(g2d);
}
, dass so lange funktioniert, wie Sie nicht über sich selbst aktualisierenden Komponenten kümmern. Wenn Sie in Ihrer Anwendung ein Textfeld haben, funktioniert dieser Ansatz nicht mehr, da sich das Textfeld jede Sekunde aktualisiert, um den (blinkenden) Cursor anzuzeigen. Und da dieses Mal das modifizierte Grafikobjekt nicht verwendet wird, erscheint die Komponente am alten Ort. Gibt es eine Möglichkeit, ein Komponentengrafikobjekt dauerhaft zu ändern? Es gibt auch ein Problem mit den Mausklick-Event-Handlern. Die andere Möglichkeit wäre, alle untergeordneten Komponenten des JPanel (setPreferredSize) auf eine neue Größe zu skalieren. Das funktioniert nicht bei Ankreuzfeldern, da das angezeigte Bild des Ankreuzfeldes seine Größe nicht ändert. Ich habe mir auch überlegt, meinen eigenen Layoutmanager zu programmieren, aber ich glaube nicht, dass dies funktionieren wird, da Layoutmanager nur die Position (und Größe) von Objekten ändern, aber nicht in Checkboxen hineinzoomen können (siehe vorheriger Abschnitt). Oder irre ich mich mit dieser Hypothese? Haben Sie Ideen, wie Sie eine zoombare Swing GUI ohne Programmierung von benutzerdefinierten Komponenten erreichen können? Ich suchte nach drehbaren Benutzerschnittstellen, weil das Problem bekannt scheint, aber ich fand auch keine befriedigende Lösung für dieses Problem.
Danke für Ihre Hilfe, Chris
Skalierung bereits gerenderten Komponenten, die Dinge wie Anti-Alias-Schriften enthalten, werden beschissene Ergebnisse liefern, besonders wenn diese Schriften RGB-Dezimierung/Sub-Pixel-Anti-Aliasing verwenden. – NoozNooz42