0

JFrame からタイトル バーを削除したいので、その JFrame で setUndecorated(true) を呼び出しますが、装飾がオンのときに存在するその JFrame の境界線 (気の利いたグラデーション) を保持したいですか? それをしてもいいですか?LookAndFeel のデフォルトの境界線インスタンスを取得したり、グラデーションの境界線を自分で作成したりするようなものですか?

4

2 に答える 2

2

デフォルトのシステムの LookAndFeel ウィンドウの境界線は、Java ではなくシステムによって描画されるため、ウィンドウだけからタイトル バーを削除する方法はありません。あなたができる唯一のことは、ウィンドウの装飾を外し、自分で境界線を引くことです (そうです、システムの境界線を完全にコピーするには、多くの労力を費やす必要があります)。

そのようなものはSWTで利用できるかもしれませんが、それを使用するには、標準の Swing を放棄する必要があります。

于 2012-04-12T12:38:00.617 に答える
1

これを視覚的に実現するには、 を作成しJPanelて境界線を設定し、パネルをフレームのコンテンツとして設定します。

public class Undecorated {

  public static void main(String[] args) {
    JFrame frame = new JFrame();

    JPanel borderedPanel = new JPanel();

    //Use any border you want, eg a nice blue one
    borderedPanel.setBorder(BorderFactory.createMatteBorder(5, 5, 5, 5, Color.BLUE));

    frame.setContentPane(borderedPanel);
    frame.setUndecorated(true);
    frame.setSize(new Dimension(200, 200));
    frame.setVisible(true);
  }

}
于 2012-04-12T11:28:57.157 に答える