我正试图在setBackground
上拨打JPanel
,以便它与我JFrame
的颜色相匹配,但颜色比我输入的颜色要亮一些。
我已经尝试过设置HSB,RGB,HEX代码,它们都给我相同的颜色,我的颜色更明亮。
不太清楚如何获得我想要的颜色?
编辑:
我从Photoshop获取颜色。我查找正确的颜色(我想要的)并复制HSB RGB或HEX代码。它在Photoshop中看起来应该如此,但是java给了我更明亮的颜色?
我使用过java代码:
Color color = new Color(0x94b3c7);
jpanel.setBackground(color);
答案 0 :(得分:11)
物质正在'着色'您的背景颜色以尝试添加主题的一些颜色。如果你使用不同的皮肤,你会得到不同的结果。例如,秋天的皮肤会使东西变成橙色。通过将客户端属性org.pushingpixels.substance.api.SubstanceLookAndFeel#COLORIZATION_FACTOR
设置为1.0
,可以在每个组件的组件上更改此值。例如:
frame.putClientProperty(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0)
这将指示背景画家使用100%的用户指定背景颜色,而不是使用50%的颜色。
这也可以全局设置......
UIManager.put(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0);
再次,取决于每个组件的覆盖。如果未设置,则默认着色因子为0.5
。
答案 1 :(得分:6)
此SSCCE显示Photoshop示例中的颜色:
public class ColorTest {
public static void main(String[] args) {
JLabel label = new JLabel("Java Color");
label.setFont(label.getFont().deriveFont(20f));
label.setForeground(Color.WHITE);
label.setBackground(new Color(0x94b3c7));
label.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
label.setOpaque(true);
JPanel jpanel = new JPanel();
jpanel.setOpaque(true);
jpanel.add(label);
jpanel.setBackground(Color.GREEN);
JFrame frame = new JFrame();
frame.setContentPane(jpanel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
也许这有助于向您揭示如何设置颜色以获得您想要的颜色?
编辑:现在添加了opaque的显式设置以尝试解决物质L& F问题。
答案 2 :(得分:3)
所以我发现了问题。它实际上有点烦人,我可能应该在问题中添加这个,但我从未想过这会导致问题。
使用网页http://www.pushing-pixels.org
中名为Substance.api
的内容
它是GUI的颜色,我的意图是改变JFrame的颜色,但我改变了整个颜色证明。
因此,如果有人知道如何更改JFrame颜色,请抓住我吧! :)
这是强盗代码:
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(new SubstanceRavenLookAndFeel());
} catch (Exception e) {
}