嘿,我想为jbutton
设置属性:setContentAreaFilled(false)
。
但是我无法使用UI Manager完成这个操作:
UIManager.put("Button.contentAreaFilled", false);
但是值没有被改变。 有人可以提供解决方法或代码中的缺陷吗?
嘿,我想为jbutton
设置属性:setContentAreaFilled(false)
。
但是我无法使用UI Manager完成这个操作:
UIManager.put("Button.contentAreaFilled", false);
UIManager
是不可能实现的,我已经在我的电脑上进行了测试(Windows 10,jre1.8.0_131),并且该键(Button.contentAreaFilled
)不存在(我还尝试使用不同的 LookAndFeel
s)。UIManager
键的列表 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 ("...");
setOpaque(false);
- achAmháin