JFrame behält bei der Größenänderung das gleiche Fensterseitenverhältnis bei
PHP-Editor Zimo präsentiert Ihnen diese Ausgabe von Java Q&A. Wir besprechen, wie Sie bei der Größenänderung eines JFrames das gleiche Fensterseitenverhältnis beibehalten. JFrame ist eine häufig verwendete Fensterkomponente in Java, aber die Beibehaltung des Seitenverhältnisses bei der Größenänderung war für Entwickler schon immer ein Problem. In diesem Artikel stellen wir Ihnen einige praktische Methoden und Tipps vor, die Ihnen bei der Lösung dieses Dilemmas helfen. Lass uns eintauchen!
Frageninhalt
Ich arbeite an Linux Gnome.
Ich möchte das Fenster im Seitenverhältnis 16:9 behalten. Wenn Sie beispielsweise die Breite skalieren, ändert der Code nur die Höhe, sodass Benutzereingaben nicht berührt werden.
Mit dieser Methode ändert sich die Größe des Fensters über das hinaus, was es sein sollte. Ich habe zum Beispiel die Breite leicht skaliert, aber die Höhe ist viel größer als sie sein sollte.
import java.awt.Color; import java.awt.Dimension; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; import javax.swing.JPanel; public class Main { public static void main(String[] args) { JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(1280, 720)); panel.setBackground(new Color(89, 108, 171, 255)); JFrame frame = new JFrame("Test"); frame.setLocation(100, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(panel); frame.pack(); frame.setVisible(true); panel.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { int targetWidth = frame.getSize().width; int targetHeight = frame.getSize().width * 9 / 16; if (targetHeight > frame.getSize().height) { targetHeight = frame.getSize().height; targetWidth = frame.getSize().height * 16 / 9; } frame.setSize(targetWidth, targetHeight); } }); } }
Lösung
Hier sind meine Gedanken.
JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(1280, 720)); panel.setBackground(new Color(89, 108, 171, 255)); JFrame frame = new JFrame("Test"); frame.setLocation(100, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p2 = new JPanel(); p2.add(panel); frame.setContentPane(p2); frame.pack(); frame.setVisible(true); p2.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { int fw = frame.getSize().width; int fh = frame.getSize().height; if( 16*fh > 9*fw ){ panel.setPreferredSize( new Dimension(fw, 9*fw/16) ); } else{ Dimension d = new Dimension(16*fh/9, fh); panel.setPreferredSize( d ); } frame.validate(); } });
Auf diese Weise ändern Sie nicht den Wert, den der Benutzer anpasst. (Größe des Rahmens) Sie reagieren auf Änderungen und stellen sicher, dass das Panel immer noch die richtige Größe hat.
Das obige ist der detaillierte Inhalt vonJFrame behält bei der Größenänderung das gleiche Fensterseitenverhältnis bei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)
