Java Swing如何在文本位置的菜单中设置图标

校园

我需要在JMenu中放置一个红色矩形作为分隔符。它不能只是分隔符实例,而必须是JMenuItem(JSeparator遍及整个菜单宽度)。我的问题是,当我将此矩形设置为图标时,它(正确地...)将所有菜单组件移至右侧扩展的整个菜单。我希望它是上方和下方元素的文字位置。

我正在尝试使用html,但它什么也没有画,或者只画了一个小的垂直黑点。

JMenuItem sep = new JMenuItem();
    sep.setText("<html><hr size=5 style='background:red;'></html>");

在此处输入图片说明

彼德

您的html是一个小的垂直位置,因为您没有提供宽度。通过提供如下所示的宽度,您将看到一行:

sep.setText("<html><hr style=\"width:100px;\"></html>");

尽管提供了颜色,但您的线条仍然是黑色的事实可能是由以下错误引起的:

https://bugs.openjdk.java.net/browse/JDK-5059678


除了使用hr标签之外,您还可以为组件设置样式,这将为宽度带来更大的灵活性。有了以上内容,分隔符将始终为100 px,这意味着在将基于文本的大/小项目添加到菜单时,它看起来可能不合适

这样的东西可以满足您的需求吗?

private JMenuItem createColoredSeparator(Color color){
    JMenuItem separator = new JMenuItem();
    separator.setPreferredSize(new Dimension(5,5));
    separator.setBackground(color);
    separator.setEnabled(false); //make the item unclickable so menu doesn't close
    return separator;
}

用法示例:

JMenu menu = new JMenu("Menu");
menu.add(new JMenuItem("VeryLongMenuItemName"));
menu.add(createColoredSeparator(Color.RED));
menu.add(new JMenuItem("MenuItemName"));

输出:

在此处输入图片说明


要使上面的内容不能用所选颜色填充整个宽度,您可以添加默认颜色的边框,以通过以下编辑隐藏背景的一部分createColoredSeparator

separator.setPreferredSize(new Dimension(20,20));   

separator.setBorder(BorderFactory.createLineBorder(UIManager.getColor("MenuItem.background"), 8));

输出:
在此处输入图片说明


更新: 我不知道您是否需要在潜在解决方案之上应用凸起的边框。您可以使用 CompoundBorder 来实现, 该方法在 How to Use Borders的 一部分中 进行了介绍这使您可以将多个边界合并在一起,一次合并两个边界,一个边界应用于内部,另一个边界应用于外部。

更新到以下内容:

private JMenuItem createColoredSeparator(Color color){
        JMenuItem separator = new JMenuItem();
        separator.setPreferredSize(new Dimension(50,50)); //Increased to highlight whats happening
        //Imitate the default raised border
        Border raisedBorder = BorderFactory.createBevelBorder(BevelBorder.RAISED,
                UIManager.getColor("MenuItem.background"),UIManager.getColor("MenuItem.background").darker());
        //Merge the borders with the raised border applied outside of the border concealing part of the background
        separator.setBorder(new CompoundBorder(
                raisedBorder, BorderFactory.createLineBorder(UIManager.getColor("MenuItem.background"), 8)));
        separator.setBackground(color);
        separator.setEnabled(false); //make the item un-clickable so menu doesn't close
        return separator;
    }

提供以下内容:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在TextView / EditText中设置文本位置

来自分类Dev

如何在TextView / EditText中设置文本位置

来自分类Dev

获取并设置Java Swing中的JScrollBar位置

来自分类Dev

如何在Java swing中向窗口添加文本行?

来自分类Dev

如何在输入中添加Java图标和阵容文本?

来自分类Dev

如何在输入中添加Java图标和阵容文本?

来自分类Dev

如何在Java Swing中设置按钮的背景图像

来自分类Dev

如何在Java中为Swing组件设置字体粗细

来自分类Dev

如何为Java Swing应用程序设置图标?

来自分类Dev

如何为Java Swing应用程序设置图标?

来自分类Dev

Java Swing:如何在自定义Jbutton上设置文本?

来自分类Dev

Java Tesseract返回文本位置的坐标

来自分类Dev

如何在VBA中的某个文本位置粘贴值?

来自分类Dev

如何在VBA中的某个文本位置粘贴值?

来自分类Dev

Java swing,如何在选项菜单上单击调用函数?

来自分类Dev

如何在Java Swing中重叠面板?

来自分类Dev

如何在Java Swing中删除行?

来自分类Dev

如何在Java Swing中抓住鼠标?

来自分类Dev

如何在 Java Swing 中对齐组件?

来自分类Dev

如何在Windows7、8中设置Java应用程序的桌面图标?

来自分类Dev

如何在Android的Java中为弹出菜单设置自定义主题?

来自分类Dev

如何在Android的Java中为弹出菜单设置自定义主题?

来自分类Dev

imagick annotateImage:如何从左上方设置文本位置

来自分类Dev

如何通过代码设置对话框的文本位置?

来自分类Dev

如何在Java中为ArrayList中的所有元素设置文本颜色?

来自分类Dev

如何通过Java代码在main.xml中设置图标?

来自分类Dev

尽管设置为框架,但 Java 菜单栏未出现在 Swing GUI 中

来自分类Dev

如何在固定文本位置的情况下使CSS3中的框变大?

来自分类Dev

如何在考虑缩放的同时在 html css 中实现绝对文本位置?

Related 相关文章

  1. 1

    如何在TextView / EditText中设置文本位置

  2. 2

    如何在TextView / EditText中设置文本位置

  3. 3

    获取并设置Java Swing中的JScrollBar位置

  4. 4

    如何在Java swing中向窗口添加文本行?

  5. 5

    如何在输入中添加Java图标和阵容文本?

  6. 6

    如何在输入中添加Java图标和阵容文本?

  7. 7

    如何在Java Swing中设置按钮的背景图像

  8. 8

    如何在Java中为Swing组件设置字体粗细

  9. 9

    如何为Java Swing应用程序设置图标?

  10. 10

    如何为Java Swing应用程序设置图标?

  11. 11

    Java Swing:如何在自定义Jbutton上设置文本?

  12. 12

    Java Tesseract返回文本位置的坐标

  13. 13

    如何在VBA中的某个文本位置粘贴值?

  14. 14

    如何在VBA中的某个文本位置粘贴值?

  15. 15

    Java swing,如何在选项菜单上单击调用函数?

  16. 16

    如何在Java Swing中重叠面板?

  17. 17

    如何在Java Swing中删除行?

  18. 18

    如何在Java Swing中抓住鼠标?

  19. 19

    如何在 Java Swing 中对齐组件?

  20. 20

    如何在Windows7、8中设置Java应用程序的桌面图标?

  21. 21

    如何在Android的Java中为弹出菜单设置自定义主题?

  22. 22

    如何在Android的Java中为弹出菜单设置自定义主题?

  23. 23

    imagick annotateImage:如何从左上方设置文本位置

  24. 24

    如何通过代码设置对话框的文本位置?

  25. 25

    如何在Java中为ArrayList中的所有元素设置文本颜色?

  26. 26

    如何通过Java代码在main.xml中设置图标?

  27. 27

    尽管设置为框架,但 Java 菜单栏未出现在 Swing GUI 中

  28. 28

    如何在固定文本位置的情况下使CSS3中的框变大?

  29. 29

    如何在考虑缩放的同时在 html css 中实现绝对文本位置?

热门标签

归档