Wenn ich nicht veränderbare JFrames erstellen und Windows Aero aktiviert ist, scheint setLocation
den Fensterrahmen nicht korrekt zu berücksichtigen.nicht resizierbare Fensterrahmen und Positionierung
Im folgenden Code würde ich erwarten, dass der zweite Frame rechts vom ersten Frame positioniert wird, stattdessen die Grenzen überlappen. Wenn Aero deaktiviert ist oder wenn ich die Anrufe zu setResizable
entferne, wird dies wie erwartet ausgeführt.
import java.awt.Rectangle;
import javax.swing.JFrame;
public class FrameBorders {
public static void main(String[] args) {
JFrame frame1 = new JFrame("frame 1");
JFrame frame2 = new JFrame("frame 2");
frame1.setResizable(false);
frame2.setResizable(false);
frame1.setVisible(true);
Rectangle bounds = frame1.getBounds();
frame2.setLocation(bounds.x+bounds.width, bounds.y);
frame2.setVisible(true);
}
}
Mache ich etwas falsch oder ist das ein Fehler? Wie kann ich 2 nicht veränderbare Dialoge nebeneinander anzeigen, ohne überlappende Ränder zu haben?
Edit: hat Screenshots (geändert auch frame2 zu einem JDialog anstelle eines JFrame)
Aero On:
Aero Off:
Aero On aber veränderbare:
arbeiten zu lassen Warum wollen Sie ohne überlappende Grenzen unresizable 2 Dialoge nebeneinander angezeigt werden soll? –
Ich möchte 2 Fenster anzeigen, die anfangs nebeneinander positioniert sind. – msam
Bitte setzen Sie keine willkürlichen Grenzen auf einen nicht veränderbaren Container. Siehe [* Die Verwendung mehrerer JFrames, gute/schlechte Praxis *] (http://stackoverflow.com/a/9554657/230513)? – trashgod