1

Windows バージョンの Firefox には、従来のメニュー バーを置き換えるアプリケーション タイトルと組み合わせた特別なオレンジ色のボタンがあります。

Firefox のオレンジ色のボタン

Javaでこのようなものを作成することは可能ですか? または他の定式化:Javaのタイトルバーにボタンを配置するにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

2

タイトル バーは OS に依存するため変更できません。ただし、JFrame を undecorated(true) に設定し、JPanel を作成してフレームの上部に追加することで、カスタム タイトル バーを作成できます。

于 2012-12-18T11:54:45.910 に答える
1

誰もが言っているように、標準のタイトル バーにボタンを追加することはできません。

ただし、Metal のルック アンド フィールの使用を容認する場合は、コンポーネントを半確実に追加できるタイトル バーを作成することができます。

JButton button = new JButton(" Menu \u25be ");

JFrame frame = new JFrame("Title");
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

// Force creation of title bar components.
frame.setPreferredSize(new Dimension(400, 400));
frame.pack();

JLayeredPane layeredPane = frame.getLayeredPane();
JComponent titlePane = (JComponent) layeredPane.getComponentAt(0, 0);
for (Component c : titlePane.getComponents()) {
    if (c instanceof Container &&
        ((Container) c).getLayout() instanceof DefaultMenuLayout) {

        int layer = layeredPane.getLayer(titlePane);
        layeredPane.setLayer(button, layer + 1);

        button.setLocation(c.getX() + c.getWidth() + 3, 1);
        Dimension size = button.getPreferredSize();
        size.height = Math.min(size.height, titlePane.getHeight() - 2);
        button.setSize(size);
        layeredPane.add(button);

        break;
    }
}

これは、メソッドが true を返す唯一の LookAndFeel クラスであるため、Metal ルック アンド フィールを使用している場合にのみ機能しgetSupportsWindowDecorationsます (私が思うに)。

于 2012-12-19T04:06:02.127 に答える