8

アプリケーションで JMenuBar を使用すると、ファイル、編集などの要素が近すぎます。要素間にスペースがあれば、見栄えがよくなります。これは可能ですか?

4

7 に答える 7

8

はい、空のテキストを含む MenuBar アイテムを追加して、クリック可能/選択可能にしないでください

于 2012-08-31T09:12:21.923 に答える
8

JComponentsそうでないものを追加する必要があるfocusable場合は、スペースを作成できます

  1. JMenuBar

    • JLabel(required に設定する必要がありますPreferredSize)

    • JSeparator(最小サイズは 10 ピクセルですsetOpaqueJSeparator

  2. JMenuItem

    • JSeparator(追加の設定は必要ありません)

    • JLabel(required に設定する必要がありますPreferredSize)

于 2012-08-31T09:28:14.843 に答える
5

水平に使用する場合は、 を使用できます|

menu.add(new JMenu("File"));
menu.add(new JMenu("|"));
menu.add(new JMenu("Edit"));

JSeparator 垂直方向の使用では、単にまたは を使用できますaddSeparator()

menu.add(new JMenuItem("Close"));
menu.add(new JSeparator());        // explicit
menu.addSeparator();               // or implicit
menu.add(new JMenuItem("Exit"));

セパレーター

于 2012-08-31T09:13:57.713 に答える
5

古いですが、同じ問題の解決策を探していましたが、これにたどり着きました:

次のように、JMenuItem にマージンを設定する必要があります。

JMenuItem menu = new JMenuItem("My Menu");
menu.setMargin(new Insets(10, 10, 10, 10));
于 2013-02-25T16:32:04.700 に答える
1

javax.swing.Box には、非表示の固定幅コンポーネントを作成するための createHorizo​​ntalStrut( int width ) という静的メソッドがあります。

コードは次のようになります。

JMenuBar menuBar = new JMenuBar();
menuBar.add( new JMenu( "File" ) );
menuBar.add( Box.createHorizontalStrut( 10 ) );  //this will add a 10 pixel space
menuBar.add( new JMenu( "Edit" ) );
于 2014-07-01T19:41:36.910 に答える
0

他の回答はうまく機能しますが、パディングとマージンのために予期しないスペースが発生する可能性があります。スペーサーのサイズをより細かく制御したい場合:

JMenu spacer = new JMenu();

//disable the spacer so that it doesn't behave
//like a menu item
spacer.setEnabled(false);

//Java components are weird. Set all three to
//guarantee that size is used
spacer.setMinimumSize(new Dimension(width, 1));
spacer.setPreferredSize(new Dimension(width, 1));
spacer.setMaximumSize(new Dimension(width, 1));

//add the spacer to your JMenuBar
jMenuBar.add(spacer);
于 2015-12-19T05:18:50.057 に答える