【问题标题】:How to add border to JMenu button如何为 JMenu 按钮添加边框
【发布时间】:2018-06-01 11:06:43
【问题描述】:

我无法为 JMenu 按钮添加边框,看起来 setBorder 方法仅适用于 JMenuItem。

import javax.swing.*;
import java.awt.*;

public class Test extends JFrame {
public Test() {
   initUI();
}

private void initUI() {


    // creating menuBar
    JMenuBar menuBar = new JMenuBar();

    // creating menu and adding border
    JMenu menu = new JMenu("Some menu");
    menu.setBorder(BorderFactory.createLineBorder(Color.black, 3));

    // creating item and adding border (the same way)
    JMenuItem item1 = new JMenuItem("Some item");
    item1.setBorder(BorderFactory.createLineBorder(Color.black, 3));

    // adding all together
    menu.add(item1);
    menuBar.add(menu);
    setJMenuBar(menuBar);

    // basic settings for the window
    setTitle("Testing JMenu");
    setSize(360, 250);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public static void main(String[] args) {
    EventQueue.invokeLater(() -> {
        Test test =new Test();
        test.setVisible(true);
    });
}
}

结果如下;我预计 JMenu 和 JMenuItem 周围都有黑框

Picture of created GUI

【问题讨论】:

标签: java swing user-interface jmenu jmenuitem


【解决方案1】:

JMenu 更复杂。您可能需要像这样编辑它:

UIManager.put("PopupMenu.border", new LineBorder(Color.RED));

您可以在https://docs.oracle.com/javase/8/docs/api/javax/swing/UIManager.html查看 UIManager 的 javadocs

然后您可以检查文件${java.home}/lib/swing.properties 以获得类似的属性。

【讨论】:

    【解决方案2】:
    menu.setBorderPainted(true);
    UIManager.put("PopupMenu.border",BorderFactory.createLineBorder(Color.RED));
    

    【讨论】:

      猜你喜欢
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多