2012-08-31 42 views
6

Các yếu tố như Tệp, Chỉnh sửa, v.v. quá gần nhau khi sử dụng JMenuBar trong ứng dụng của tôi, trông sẽ đẹp hơn nếu có khoảng cách giữa các phần tử. Điều này có thể không?Thêm khoảng cách giữa các phần tử trong JMenuBar

+1

nếu bạn đang sử dụng NetBeans thử nhấp chuột phải vào thành phần và nhấn không gian xung quanh thành phần –

+1

nếu bạn cần không gian sau đó thử menubar.add (JPanel mới ()); nó làm việc cho tôi. –

Trả lời

6

Vâng, chỉ cần thêm thanh menu item với văn bản trống trong đó và làm cho nó không thể nhấp/chọn

+2

Cảm ơn bạn, điều này đã hoạt động hiệu quả hơn PS. .setClickable() và .setSelectable() không tồn tại, thay vào đó hãy sử dụng .setEnabled() cho những người gặp phải vấn đề tương tự – Andrei0427

5

Đối với việc sử dụng ngang bạn có thể mất một sử dụng |.

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

Đối với việc sử dụng dọc bạn có thể chỉ cần sử dụng một JSeparatorhoặcaddSeparator():

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

Separator

7

cần thiết để thêm JComponents mà không phải là focusable, bạn có thể tạo một không gian cho

  1. JMenuBar

    • JLabel (phải thiết cho yêu cầu PreferredSize)

    • JSeparator (kích thước minimus là 10pixels, phải setOpaque cho JSeparator)

  2. JMenuItem

    • JSeparator (không có cài đặt bổ sung cần thiết)

    • JLabel (phải thiết cho yêu cầu PreferredSize)

2

Đó là cũ, nhưng tôi đang tìm kiếm giải pháp nào cho vấn đề tương tự Và tôi đã phát hiện ra điều này:

Bạn nên đặt lề cho máy của bạn JMenuItem, như t của mình:

JMenuItem menu = new JMenuItem("My Menu"); 
menu.setMargin(new Insets(10, 10, 10, 10)); 
1

Có một phương pháp tĩnh trên javax.swing.Box được gọi là createHorizontalStrut (chiều rộng int) để tạo thành phần có chiều rộng cố định vô hình.

Mã này sẽ giống như thế này:

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")); 
0

Những câu trả lời khác làm việc tốt, nhưng có thể có khoảng cách bất ngờ do đệm và lợi nhuận. Nếu bạn muốn có thêm quyền kiểm soát kích thước của spacer của bạn:

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); 
Các vấn đề liên quan