不同的外观能够使用不同的初始组件属性吗?

时间:2019-04-19 12:25:23

标签: java swing awt look-and-feel

当我们创建一个组件时,该组件采用一些初始值,并将根据活动的List<Card> list = new ArrayList(); for (Map.Entry<String, Card> entry : userHash.entrySet()) { if(entry.getKey().equals(username)) { list.add(entry.getValue(); } } 对其进行样式设置。例如,userHash.entrySet().stream().filter(entry -> username.equals(entry.getValue()) .map(Entry::getKey) .collect(toList()); 将以等于0(可能为Look & Feel)的水平对齐方式开始。

我的问题是,这些外观是否可以“覆盖”默认组件的这些初始值(我不是在谈论JButton)。再次,我仅指的是所有组件都具有的这种属性,而不是样式及其外观(即使其中某些属性影响组件的外观)。

我已经用Java的外观,系统的外观(Windows 10)和Nimbus测试了先前的值(SwingConstants.CENTER)。该值似乎保持不变。 但是其他LAF还是其他组件的其他值呢?

有人可以说,我的问题也可以用“外观和感觉能够改变” 来解决吗?

NimbusButton extends JButton

1 个答案:

答案 0 :(得分:1)

这个问题不能给出完整的答案(当我说它太复杂时,请相信我,我正在从头开始实施,现在已经四个月了,我什至不知道我是否该打电话了! )。

  

我的问题是,这些外观是否能够“更改-覆盖”默认组件的这些初始值

是的,不是,他们可以更改此类属性,但是尊重他们是他们的责任。 加上大多数初始值都是首先显示的外观和感觉值here this will give you a hint about what happend at your first println

真正的答案是检查您要查询的ComponentUI实现。

您是一名编码人员,所以找出它们可以更改的内容与原始包中的任何代码相同(因为代码为代码!)并不会感到震惊。

  

我已经用Java的外观,系统的外观(Windows 10)和Nimbus测试了先前的值(JButton.horizo​​ntalAlignment)。该值似乎保持不变。但是其他L&F或其他组件的其他值呢?

每个ui对象都有一个名为installUI(JComponent c)的方法,这个问题的答案被包装在此方法周围,当您更改ui并根据实现方式更改时,会调用此方法,它们会更改一些属性以适合他们的需要(例如,以任何深色L&F为例,AbstractButton ui的实现必须将背景设置为深色,将前景设置为明亮,以使文本显示为深色)。

  

“外观可以改变的东西”

许多人认为ui控制着该组件的一小部分,但实际上,它们全都来自ui!例如AbstractButton有文字,如果ui没有在{的某个地方调用Graphics.drawString(AbstractButton.getText(),x,y)(或类似的东西),那么很多人认为ui不负责显示它,而是相反! {1}}方法没有文字

因此,您对“屏幕上的所有内容”这一问题的简短回答。