2011-09-05 6 views
5

JDialogを移動できないようにするコードはありますか?私は2つのオプションを見てきました:Java - JDialog unmovable

  1. setUndecorated(true);すべてのトリミングを削除します。
  2. addComponentListenerであり、componentMoved()メソッドをオーバーライドします。これにより、JDialogは、移動後にinduceEpilepticSeizure()を呼び出します。

+2

これを行う理由を説明できますか?それは働くアプローチの考えを与えるかもしれません。 –

答えて

5

私の最初の本能がある - あなたがsetUndecorated(true)を使用していますしない限り、あなたは...あなたは手動でUGH、そこにいくつかのトリミングを置くが、、うまくできないことができます!

ネイティブトリミングが必要で、コンポーネントリスナーを使用することで恐ろしいちらつきがなくても動かないようにしたい場合は、できないと思います。

デフォルトの境界線のように見えるように手動で境界線を作成することもできますが、これを行う方法の例がありますが、私は意図的に境界線を一日中見たようなものにしました。 BorderFactoryコールを適切に組み合わせて、何をしたいのかを判断する必要があります。

public static void main(String[] args) throws InterruptedException { 
    JDialog frame = new JDialog((Frame) null, "MC Immovable"); 
    frame.setUndecorated(true); 
    JPanel panel = new JPanel(); 
    panel.setBorder(BorderFactory.createEtchedBorder(Color.GREEN, Color.RED)); 
    panel.add(new JLabel("You can't move this")); 

    frame.setContentPane(panel); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
    frame.setVisible(true); 
} 
+1

setUndecorated(true)を使用しない理由は、私がデフォルトの境界を維持したいということです。ウィンドウはボーダーレスですか?みんなありがとう。 –

関連する問題