You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FlatLaf主题编辑器给Swing菜单栏选项加圆角与边距?

实现类似VSCode标题栏的JMenuBar样式(FlatLightLaf)

你之前的配置没达到预期是因为用错了属性:MenuBar.itemMargins是调整菜单项内容(文字)到菜单项边界的内边距,而非选中背景与菜单项的间距。要实现hover背景带边距+圆角的效果,需要调整以下关键属性:

核心配置方案

方法1:通过FlatLaf.properties配置

在你的主题配置文件中添加以下内容:

# 设置hover背景的圆角半径
MenuBar.selectionArc = 8
# 设置hover背景与菜单项边界的边距(上、左、下、右),形成空白间隔
MenuBar.selectionInsets = 4, 8, 4, 8
# 重置菜单项内容的内边距(避免文字偏移)
MenuBar.itemMargins = 0, 0, 0, 0
# 匹配VSCode标题栏的背景色(可根据需求调整)
MenuBar.background = #ffffff
MenuBar.hoverBackground = #f1f3f4

方法2:通过代码动态设置属性

如果不想用配置文件,可在启动时直接通过UIManager设置:

import com.formdev.flatlaf.FlatLightLaf;
import javax.swing.*;
import java.awt.*;

public class VSCodeMenuBarDemo {
    public static void main(String[] args) {
        FlatLightLaf.setup();

        // 配置VSCode风格的MenuBar属性
        UIManager.put("MenuBar.selectionArc", 8);
        UIManager.put("MenuBar.selectionInsets", new Insets(4, 8, 4, 8));
        UIManager.put("MenuBar.itemMargins", new Insets(0, 0, 0, 0));
        UIManager.put("MenuBar.background", Color.WHITE);
        UIManager.put("MenuBar.hoverBackground", new Color(241, 243, 244));

        // 构建窗口和菜单
        JFrame frame = new JFrame("VSCode Style MenuBar");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 600);

        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("File");
        fileMenu.add(new JMenuItem("New"));
        fileMenu.add(new JMenuItem("Open"));
        menuBar.add(fileMenu);

        JMenu editMenu = new JMenu("Edit");
        editMenu.add(new JMenuItem("Cut"));
        editMenu.add(new JMenuItem("Copy"));
        menuBar.add(editMenu);

        frame.setJMenuBar(menuBar);
        frame.setVisible(true);
    }
}

关键属性说明

  • MenuBar.selectionArc:控制hover背景的圆角大小,数值越大圆角越明显。
  • MenuBar.selectionInsets:设置hover背景与菜单项边缘的空白,这是实现"背景和实际背景留空"的核心属性。
  • MenuBar.itemMargins:重置为0是为了避免菜单项内容因内边距过大而偏移,确保文字对齐到hover背景内。

注意事项

确保使用FlatLaf 2.0及以上版本,部分属性(如selectionInsets)是在较新版本中加入的,旧版本可能不支持。

内容的提问来源于stack exchange,提问作者iso53

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:13:23