在 JCheckBoxMenuItem 中,如何仅使复选框刻度线可见

发布于 2024-11-18 16:08:37 字数 167 浏览 5 评论 0原文

在此处输入图像描述

在此取自 Eclipse 的图像中,“自动构建”显示一个没有复选框的勾号。如何使用 Java JCheckBoxMenuItems 创建与此类似的效果,其中只有刻度线而不是复选框可见?

enter image description here

In this image taken from eclipse, "Build Automatically" shows a tick mark without a checkbox. How can I create a similar effect to this with Java JCheckBoxMenuItems, where only the tickmark and not the checkbox are visible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我乃一代侩神 2024-11-25 16:08:37

JCheckBoxMenuItem 扩展自 AbstractButton,因此您应该能够为适当的 set???Icon 方法提供自定义图标。

JCheckBoxMenuItem extends from AbstractButton so you should be able to provide custom Icons for the appropriate set???Icon methods.

你曾走过我的故事 2024-11-25 16:08:37

外观由 BasicMenuItemUI 定义,通常每个外观都是独一无二的。感觉。您可以提供自己的变体来覆盖 paintMenuItem()。因为这样做会违反用户首选的外观和外观。感觉,你必须决定这是否值得付出努力。

附录:@camickr的 Icon 想法更优雅,但你总是可以放一个 ✔ (U+2714) 在菜单文本中。

The appearance is defined by BasicMenuItemUI, typically unique to each Look & Feel. You can supply your own variation that overrides paintMenuItem(). As doing so will violate the user's preferred Look & Feel, you'll have to decide if it's worth the effort.

Addendum: @camickr's Icon idea is more elegant, but you can always put a ✔ (U+2714) in the menu's text.

提笔书几行 2024-11-25 16:08:37

您可以扩展 JCheckbox 并覆盖 PaintComponent()

you can extend JCheckbox and override paintComponent()

向日葵 2024-11-25 16:08:37

您可以使用 JMenuItem 和 ActionListener 来完成此操作:

JMenuItem jcmi1 = new JMenuItem("   Choix 1");

jcmi1.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent arg0) {
            if (jcmi1.getText()!="\u2714  Choix 1"){
                jcmi1.setText("\u2714  Choix 1");
            }else{
                jcmi1.setText("   Choix 1");
            }
        }

    });

You can do it with JMenuItem and an ActionListener:

JMenuItem jcmi1 = new JMenuItem("   Choix 1");

jcmi1.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent arg0) {
            if (jcmi1.getText()!="\u2714  Choix 1"){
                jcmi1.setText("\u2714  Choix 1");
            }else{
                jcmi1.setText("   Choix 1");
            }
        }

    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文