java - JButton 不会显示背景颜色

标签 java swing user-interface jbutton

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

-尽管切换了 setOpaque() 和 setContentAreaFilled() 的 true/false,但我无法获取当前设置为显示背景颜色的 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 内部更改按钮的颜色,或者这个想法只是对可以以更简单的方式完成的事情的冗余。

非常感谢。

最佳答案

我想你想尝试一下外观和感觉。 尝试

button.setUI(new MetalButtonUI());

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

关于java - JButton 不会显示背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781275/

相关文章:

java - 如何解释以下 Spring EL

java - Grails/hibernate 模式:DuplicateKeyException和NonUniqueObjectException

java - 类(class)计划 - java JApplet

java - 在缓冲图像上绘制油漆?

java - 如何将一个窗口附加到另一个窗口

java - 如何在不使用访问器的情况下访问父类(super class)中的私有(private)变量?

java - Bukkit 自定义元素消耗

java - 使用多词元素搜索 JComboBoxes

c - GTK+ 每隔 x 秒调用一次函数

JavaFX 和 IntelliJ 错误 : java. lang.module.InvalidModuleDescriptorException