使用UI管理器设置JButton()的属性的JAVA代码

3

嘿,我想为jbutton设置属性:setContentAreaFilled(false)。 但是我无法使用UI Manager完成这个操作:

UIManager.put("Button.contentAreaFilled", false);

但是值没有被改变。 有人可以提供解决方法或代码中的缺陷吗?

try add setOpaque(false); - achAmháin
{btsdaf} - xyz
{btsdaf} - Piro
1个回答

1
我认为使用 UIManager 是不可能实现的,我已经在我的电脑上进行了测试(Windows 10,jre1.8.0_131),并且该键(Button.contentAreaFilled)不存在(我还尝试使用不同的 LookAndFeels)。
您可以在此处找到 UIManager 键的列表 here
此外,this link(由Rob Camick提供)提供了一个好的GUI,以检查不同LAF中键的默认值(如下所示的屏幕截图)。

enter image description here

您可以使用工厂方法在GUI中创建所有按钮,并在该方法内设置内容区域填充为false。

编辑

除非您创建自己的LookAndFeel,否则无法决定ComponentUI类将使用哪些键。

例如,如果您想查看JPanel默认背景和其他属性的安装方式,请参阅javax.swing.plaf.basic.BasicPanelUI类,例如:

protected void installDefaults(JPanel p) {
        LookAndFeel.installColorsAndFont(p,
                                         "Panel.background",
                                         "Panel.foreground",
                                         "Panel.font");
        LookAndFeel.installBorder(p,"Panel.border");
        LookAndFeel.installProperty(p, "opaque", Boolean.TRUE);
    }

我不建议你去尝试这个,但如果你想了解,可以阅读以下内容:

我从未尝试过,但我认为这可能会非常痛苦。

我强烈建议你使用静态工厂方法来创建按钮:这样会更简单、更安全,例如:

import javax.swing.JButton;
public class ButtonsFactory
{
    public static JButton createButton (String text) {
        JButton button = new JButton (text);
        button.setContentAreaFilled (false);
        // set any other property ...
        return button;
    }
}

现在,您只需调用以下代码即可在应用程序中创建每个按钮:
JButton button = ButtonsFactory.createButton ("...");

显然,您可以提供更多的方法来创建一个带有不同参数的按钮或其他组件。

1
{btsdaf} - MadProgrammer
1
{btsdaf} - MadProgrammer
{btsdaf} - MadProgrammer
{btsdaf} - xyz
{btsdaf} - Ansharja
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接