Jeśli utworzę ramki JFrame bez możliwości zmiany, a okno Aero zostanie włączone, setLocation
nie będzie poprawnie uwzględniać obramowania okna.Bez możliwości zmiany rozmiaru obramowania okna i pozycjonowania
W poniższym kodzie spodziewałbym się, że druga ramka zostanie umieszczona po prawej stronie pierwszej ramki, zamiast tego brzegi zachodzą na siebie. Jeśli Aero jest wyłączone lub jeśli usunę połączenia do setResizable
, robi się to zgodnie z oczekiwaniami.
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);
}
}
Czy robię coś nie tak, czy to błąd? Jak wyświetlić 2 nieukierunkowane okna dialogowe obok siebie bez nakładania się granic?
Edit: dodano zdjęcia (zmieniane również frame2 do JDialog zamiast JFrame)
Aero On:
Aero Off:
Aero włączone, ale resizable:
Dlaczego chcesz wyświetlić 2 unresizable dialogi obok siebie bez granic nakładających? –
Chcę wyświetlić 2 okna, które są początkowo ustawione obok siebie. – msam
Nie należy ustawiać dowolnych granic w pojemniku bez możliwości zmiany rozmiaru. Zobacz [* Korzystanie z wielu JFrames, Good/Bad Practice *] (http://stackoverflow.com/a/9554657/230513)? – trashgod