ホームページ >Java >&#&チュートリアル >Windows Aero を使用すると、サイズ変更できない JFrame が重なるのはなぜですか?
サイズ変更できないウィンドウの境界線と位置
サイズ変更できない JFrame が使用され、Windows Aero が有効になっている状況では、setLocation メソッドの動作がウィンドウの境界線を考慮すると、一貫性がなくなる可能性があります。
この動作を説明するには、次のようにします。次のコード スニペットを考えてみましょう:
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); } }
このコードでは、frame2 が Frame1 の右側に配置されると予想されるかもしれません。ただし、Windows Aero が有効になっている場合、2 つのフレームの境界線が重なり合います。
説明と解決策
Windows Aero は、サイズ変更できないウィンドウに異なるスタイルを適用するため、太い境界線。 setLocation メソッドは境界線の太さを考慮せずにウィンドウの生の寸法を考慮するため、ウィンドウの位置が間違って重なり合う問題が発生します。
サイズ変更不可の 2 つのフレームを並べて配置するという目的の動作を実現するには、
以上がWindows Aero を使用すると、サイズ変更できない JFrame が重なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。