2016-08-26 3 views
0

私が見つけた:非装飾のJDialog/JFrameの装飾が施され、同じ場所に2と同様のJFrames を配置する際に、1つ

1つのJFrameが飾られていると、他のではない
import java.awt.Color; 
import java.awt.Point; 
import javax.swing.JFrame; 

public class Test{ 

    public static void main(String[] args) throws InterruptedException { 

     JFrame jFrame = new JFrame(); 
     jFrame.setSize(400,200); 
     jFrame.setUndecorated(true); 
     jFrame.setLocation(new Point(200,200)); 
     jFrame.getContentPane().setBackground(Color.RED); 
     jFrame.setVisible(true); 

     JFrame jFrame2 = new JFrame(); 
     jFrame2.setSize(400,200); 
     jFrame2.setUndecorated(false); 
     jFrame2.setLocation(new Point(200,200)); 
     jFrame2.getContentPane().setBackground(Color.GREEN); 
     jFrame2.setVisible(true); 
    } 
} 

は、装飾されたフレームを生成します(緑)(赤)、非装飾よりも小さくなる:予想通り、2つのフレーム enter image description here

範囲が同じである:

JFrame 1 bounds java.awt.Rectangle [x = 200、y = 200、width = 400、height = 200]
JFrame 2境界java.awt.Rectangle [x = 200、y = 200、width = 400、height = 200]

私は何が原因か分かりませんでした。

+1

'jDialog.setUndecorated(false);は*** before *** 'jDialog.setLocation(new Point(jFrame.getX()、jFrame.getY())); ' –

+0

BTW - これはSSCCEではなくコードスニペットです。 1行のコードを変更せずに(クラス定義の作成、インポートの追加など)、問題を調査している誰かがそれを実行するために必要なものすべてを追加します。 –

+0

@AndrewThompsonご意見ありがとうございます。元のアプリ(この問題が発生した場所)で 'setUndecorated(true);'が 'setLocation(...)'の前に実行されます。違いはありません。私はコードを編集し、疑いを取り除くためにテストしました。 – c0der

答えて

0

JFrameまたはJDialogの表示サイズが異なることがわかりました。
これはインセットによるものです。装飾されていないウィンドウのサイズは0ですが、装飾されたウィンドウのサイズは> 0です。

関連する問題