Heim >Java >javaLernprogramm >Wie positioniere ich nicht veränderbare JFrames mit sichtbarem Text in Windows Aero richtig?
Beim Erstellen nicht veränderbarer JFrames scheint die setLocation-Methode das Fenster nicht richtig zu berücksichtigen Rand, wenn Windows Aero aktiviert ist. Dadurch überlappen sich die Grenzen. Das Verhalten ist wie erwartet, wenn Aero deaktiviert ist oder wenn die setResizable-Aufrufe entfernt werden.
Das Problem tritt auf, wenn die Grenzen eines nicht größenveränderbaren Containers festgelegt werden. Änderungen an den Grenzen können je nach den plattformspezifischen Schriftarteinstellungen des Benutzers dazu führen, dass Text unsichtbar wird.
Der richtige Ansatz zum Festlegen der Grenzen eines nicht veränderbaren Containers besteht darin, sicherzustellen, dass jeder Text vorhanden ist bleibt unabhängig von der Standardschriftart der Hostplattform sichtbar. Dies kann erreicht werden, indem die Grenzen basierend auf der Pixelbreite der Zeichenfolge und der Höhe des Containers angepasst werden.
Zum Beispiel berechnet der folgende Code die Pixelbreite der Zeichenfolge mithilfe von „computeStringWidth“ und legt die Framegröße entsprechend fest:
JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT); int w = SwingUtilities.computeStringWidth( label.getFontMetrics(label.getFont()), s); int h = f.getHeight(); f.setSize(w, h); f.setResizable(false);
Dadurch wird sichergestellt, dass der Text unabhängig von den Schriftarteinstellungen auf der Plattform des Benutzers sichtbar ist.
Das obige ist der detaillierte Inhalt vonWie positioniere ich nicht veränderbare JFrames mit sichtbarem Text in Windows Aero richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!