Nicht veränderbare Fensterränder und Positionierung
Beim Erstellen nicht veränderbarer JFrames mit aktiviertem Windows Aero passt sich die setLocation-Methode nicht an Der Fensterrand wird korrekt angezeigt, was zu überlappenden Rändern führt. Dies kann beobachtet werden, wenn zwei Frames nebeneinander positioniert werden.
Um dieses Problem zu lösen, ist es wichtig, die Einschränkungen und Vorbehalte beim Festlegen von Grenzen für nicht skalierbare Container zu verstehen. Beim Anpassen der Grenzen für einen Container mit nicht veränderbarer Größe ist es wichtig sicherzustellen, dass der gesamte Text unabhängig von plattformspezifischen Schriftartunterschieden sichtbar bleibt.
Um diese Herausforderungen zu veranschaulichen, betrachten Sie das folgende Beispiel:
import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class Evil extends JPanel { private static final String s = "Tomorrow's winning lottery numbers: 42, "; private JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT); public Evil() { this.add(label); } private void display() { JFrame f = new JFrame("Evil"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this, BorderLayout.WEST); f.pack(); int w = SwingUtilities.computeStringWidth( label.getFontMetrics(label.getFont()), s); int h = f.getHeight(); f.setSize(w, h); f.setResizable(false); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new Evil().display(); } }); } }
In diesem Beispiel wird ein nicht veränderbares JPanel mit einem JLabel erstellt, das eine Zeichenfolge von Lotteriezahlen anzeigt. Die Größe des JFrame wird basierend auf der Breite und Höhe des Texts festgelegt. Wenn der Rahmen angezeigt wird, wird seine Breite reduziert, um sie an die Breite der Zeichenfolge anzupassen. Wenn die Plattform des Benutzers jedoch über eine Schriftart mit größeren FontMetrics verfügt, wird der Text der Beschriftung möglicherweise abgeschnitten, wodurch die Lotteriezahlen unvollständig werden.
Daher wird empfohlen, beim Ändern der Grenzen von Containern mit nicht veränderbarer Größe Vorsicht walten zu lassen. Erwägen Sie bei Bedarf die Verwendung einer Kombination aus relativer Positionierung und Größenänderung von Komponentenelementen, um die Sichtbarkeit und die gewünschte Funktionalität aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWie positioniere ich nicht veränderbare JFrames bei aktiviertem Windows Aero richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!