Если я создаю JFrames без изменения размера, а Windows 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 включено:
Aero выключено:
Aero включено, но с изменяемым размером:
1)
установка границы устанавливает внутреннюю границу ---› извините, может плохо, я забыл, что дляUn_decorated JFrame
,2)
тогда вам нужно вычислитьPoints
как пиксели из теней, может быть по-разному для каждой из тем, - person mKorbel   schedule 21.09.2012