サイズ変更できない JFrame を作成し、Windows Aero が有効になっsetLocation
ている場合、ウィンドウの境界が正しく考慮されていないようです。
次のコードでは、境界線が重なっている代わりに、2 番目のフレームが最初のフレームの右側に配置されることが期待されます。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 を JFrame ではなく JDialog に変更)
エアロオン:
エアロオフ:
Aero オンだがサイズ変更可能: