为什么 setBackground 到 JButton 不起作用?

发布于 2024-10-17 10:23:50 字数 382 浏览 3 评论 0原文

我有以下简单的代码:

btn = new JButton();
btn.setBackground(backgroundColor)

我在使用时工作:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");

但在我评论上面的行后它停止工作。有谁知道为什么会发生这种情况以及如何在不使用明确的外观和感觉的情况下为按钮设置背景颜色?

添加

在我看来,我需要使用getBackground。但我不知道怎么办。

I have the following simple code:

btn = new JButton();
btn.setBackground(backgroundColor)

I worked when I used:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");

But it stopped to work after I have commented the above line. Does anybody know why it can happen and how I can set a background color to a button without the usage of an explicit Look and Feel?

ADDED

It seems to me that I need to use getBackground. But I do not know how.

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

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

发布评论

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

评论(6

血之狂魔 2024-10-24 10:23:50

需要将元素的 Opaque 设置为 true 才能填充颜色

     btn = new JButton();
     btn.setOpaque(true);
     btn.setBackground(backgroundColor);

it is necessary to set Opaque of the element to true for color to be filled

     btn = new JButton();
     btn.setOpaque(true);
     btn.setBackground(backgroundColor);
岁吢 2024-10-24 10:23:50

添加 btn.setBorderPainted(false)

add btn.setBorderPainted(false)

青丝拂面 2024-10-24 10:23:50

来自 setBackground() javadoc:

尊重此属性取决于外观和感觉,有些人可能会选择忽略它。

也许你的 LAF 只是忽略了它。

From setBackground() javadoc:

It is up to the look and feel to honor this property, some may choose to ignore it.

Maybe your LAF just ignored it.

守不住的情 2024-10-24 10:23:50
    btn.setBorderPainted(false);
    btn.setOpaque(true);
    btn.setBackground(Color.BLACK);
    btn.setForeground(Color.BLUE);
    btn.setBorderPainted(false);
    btn.setOpaque(true);
    btn.setBackground(Color.BLACK);
    btn.setForeground(Color.BLUE);
初与友歌 2024-10-24 10:23:50

问题也可能与您创建按钮的方式有关。检查上面的代码是否:

public class Test extends JApplet{

public void init() 
{  
    java.awt.EventQueue.invokeLater(new Runnable()
    {
        public void run() 
        {   
            setSize(200, 200);
            setLayout(null);

            JPanel p = new JPanel();
            getContentPane().add(p);
            p.setSize(getSize());
            p.setLayout(null);

            JButton b = new JButton("test");
            p.add(b);
            b.setBounds(10, 10, 100, 20);
            b.setBackground(Color.GREEN);

        }
    });
}

}

Problem also can be with the way you are creating the button. Check if the code above:

public class Test extends JApplet{

public void init() 
{  
    java.awt.EventQueue.invokeLater(new Runnable()
    {
        public void run() 
        {   
            setSize(200, 200);
            setLayout(null);

            JPanel p = new JPanel();
            getContentPane().add(p);
            p.setSize(getSize());
            p.setLayout(null);

            JButton b = new JButton("test");
            p.add(b);
            b.setBounds(10, 10, 100, 20);
            b.setBackground(Color.GREEN);

        }
    });
}

}

谎言月老 2024-10-24 10:23:50

只需单击要为其设置背景的按钮一次,然后转到属性窗口。在那里,第二个选项将是背景。单击其省略号,您可以根据自己的喜好更改颜色。在运行程序之前,颜色不会显示在框架中的按钮上。您可以看到按钮的颜色是您喜欢的。

Simply click once on the button you want to set background for, and then go to the properties window. Over there, the second option will be background. Click on its ellipsis, and you can change the color to your liking. The color won't be displayed on the button in your frame until after you run the program. You can see that the button is in the color you preferred.

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