我正在添加第二种方法。你可以使用setBorder 方法:
menuBar.setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
此解决方案的优点是您可以设置厚度级别。在上面的示例中,厚度级别设置为 2。
您还可以在许多组件中使用 setBorder 来绘制各种边框,如下例所示:
首先是基本代码:
主类:
import javax.swing.*;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
CustomGUI sw = new CustomGUI();
sw.setVisible(true);
});
}
}
CustomGui.class:
import java.awt.*;
import javax.swing.*;
public class CustomGUI extends JFrame {
public CustomGUI() {
super("Simple example");
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
setSize(500,500);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setBackground(Color.DARK_GRAY);
JMenuBar menuBar = new JMenuBar();
JMenu menu1 = new JMenu("menu B");
menuBar.add(menu1);
JMenuItem item = new JMenuItem("A text-only menu item");
menu1.add(item);
JMenu menu2 = new JMenu("menu B");
menuBar.add(menu2);
JMenuItem item2 = new JMenuItem("A text-only menu item");
menu2.add(item2);
add(menuBar);
}
}
现在添加一行:
menuBar.setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
在CustomGUI() 我们得到:
现在,如果我们想为 jmenu 添加边框(这是 OP 要求的),请添加:
menu1.getPopupMenu().setBorder(BorderFactory.createLineBorder(Color.BLUE, 4));
menu2.getPopupMenu().setBorder(BorderFactory.createLineBorder(Color.BLUE, 4));
(正如您在图像中看到的那样,我没有为菜单栏设置边框,但这可以如上所述使用:
menuBar.setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
我还添加了另一个项目,只是为了让菜单更大,更容易看到边框......)