当前位置: 首页 > 知识库问答 >
问题:

JButton将不显示背景色

俞新翰
2023-03-14

因此,我正在编写一个程序,在这个程序中,我最终希望一个按钮在按下时改变颜色。到目前为止,我的困境是:

-尽管切换了setOpaque()和setContentAreaFilled()的真/假,但我无法获取当前设置为显示背景色的JButton。在尝试添加ActionListener之前,我希望能够做到这一点。

-我想用类似于JToggleButton()的东西来改变颜色,但是我想用背景而不是图标来改变颜色。

我正在使用mac,我想知道它是否与默认按钮设置有关,但我不知道如何更改/覆盖这些。

我会发布一个截图,但不幸的是我的声誉还不够高。

下面是我得到的一个例子:

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

public class Example extends JFrame {

  public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        createAndShowGUI();
      }
    });
  }

  public static void createAndShowGUI() {

    JFrame main = new JFrame("Example");
    JPanel content = new JPanel();
    JButton button = new JButton("Press");

    button.setBackground(Color.orange);
    button.setContentAreaFilled(false);
    button.setOpaque(true);

    content.add(button);

    main.setContentPane(content);
    main.setVisible(true);
    main.setSize(40,60);
    main.setLocation(500, 200);
    main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

}

对于那些(可能在windows或linux平台上)看不到我在说什么的人来说,按钮会出现,按钮后面的布局(不是边框或JPanel,只是按钮周围的一个小矩形)会根据指定的内容着色。

提前感谢您抽出时间。

另外,我知道在ActionListener中,getSource()方法将返回与按钮关联的文本。是否有任何方法可以使用类似的东西从ActionListener内部更改按钮的颜色,或者这个想法只是一种冗余,可以用更简单的方式完成。

非常感谢。

共有3个答案

邵飞宇
2023-03-14

我想那是按钮。set不透明(true) 是不必要的。

删除它,或将其更改为:button.setOpaque(false);并查看发生了什么

赫连法
2023-03-14

我最终希望JButton在按下时改变颜色

这里有两种不同的方式(注意JButton在UIManager中有一个颜色数组)

>

  • 覆盖ButtonModel中的事件(实现ChangeListener或相同的方法,例如在JButtons API中进行压缩、设置),加速器对鼠标和按键有效(选择或聚焦窗口)

    覆盖基本按钮NUI(用于实际项目)

    我正在使用mac,我想知道它是否与默认按钮设置有关,但我不知道如何更改/覆盖这些。

    • 取决于Java使用的外观(Quaqua-OSX上的默认值或Oracle Metal、Nimbus的标准…)

  • 庞书
    2023-03-14

    我想你想在外观和感觉上做点什么。尝试

    button.setUI(new MetalButtonUI());
    

    或者为按钮尝试其他支持背景色的UI。

     类似资料:
    •  背景,就是衬在文字和前景后面显示的东西。KAG 中(默认设定)的是读入 640×480 大小的背景图片。  首先,将想要显示的 640×480 的图片放进 bgimage 文件夹中。把图片命名为 bg0.jpg 。KAG 的 LZH 档里并没有包含背景图片,请自己准备一张吧(^^)  接着,把在 显示文字相关 里所使用的剧本档(first.ks)内容修改成以下这样。 [imagestorage=

    • 问题内容: 这是一个非常简单的程序,我已尽力而为,但JPanel并未提供背景图片。我只希望面板上有一个简单的背景图像。 这是我的代码: 提前致谢 问题答案: 更换 与

    • 问题内容: 可以说我创建了一个带有jbutton的2d瓦片地图,然后在地图顶部创建了单位,当单位(也是jbutton)位于瓦片顶部时,有一种方法可以显示地图背景,因为现在单元的背景只是被涂成红色,是否可以通过jbuttons而不是jbuttons来做到这一点? 问题答案: 可能,是的,建议这样做,嗯,可能不是。 我相信您将需要将标题按钮的布局更改为可以控制的内容(这将取决于您的视觉要求)。 我个人

    • 问题内容: 我有一个Swing JButton,我的项目也使用了以下代码: 现在,当尝试使用一个按钮更改背景时,它不会变成红色,只有边框变成红色。 在仍用于其余组件/项目时,如何将背景变为红色? 问题答案: 看一下错误4880747:XP L&F:REGRESSION:JButton上的setBackground设置Windows XP中的边框颜色 。评估部分指出: 更改按钮的外观总是会导致与当前

    • 我如何设置一个按钮的活动背景颜色在swing,Java?Active background color是单击按钮时按钮背景的颜色。

    • 输入新的指令 之前已经说过,脚本是以行为单位,顺序往下执行的。 也就是说,假如填写了“显示背景”,之后下一行“显示人物”,接着继续“显示对话框”、“显示对话”,按照这样的顺序,就可以做出“人物在场景里出现并说话”的效果。 接下来就来实际试试吧。 首先关掉刚刚的记事本,重新在脚本编辑器里打开“prelogue.ks”这个文件,进入脚本的图形化编辑界面。 然后点击选中第6行,也就是“(到达文件末端)”