Если я создаю не изменяемые по размеру JFrames, а окна Aero включены, setLocation
, похоже, не учитывает границы окна правильно.Неизменяемая граница окна и позиционирование
В следующем коде я ожидаю, что второй кадр будет расположен справа от первого кадра, вместо этого границы будут перекрываться. Если Aero отключен или я удаляю вызовы на setResizable
, это делается так, как ожидалось.
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);
}
}
Я делаю что-то неправильно или это ошибка? Как я могу отображать 2 неразрешимых диалоговых окна рядом друг с другом без перекрытия границ?
Редактирование: добавлены скриншоты (также изменен frame2 к JDialog вместо JFrame)
Aero On:
Aero Off:
Aero включен, но изменяемыми:
Почему вы хотите, чтобы отобразить 2 unresizable диалоги бок о бок, не перекрывающихся границ? –
Я хочу отобразить 2 окна, которые изначально расположены бок о бок – msam
Пожалуйста, не устанавливайте произвольные границы в контейнере, не подлежащем изменению. См. [* Использование нескольких JFrames, Хорошая/Плохая Практика *] (http://stackoverflow.com/a/9554657/230513)? – trashgod