【问题标题】:panel setBackground is messing up colors of JLabels within面板 setBackground 弄乱了 JLabels 的颜色
【发布时间】:2016-07-17 08:43:33
【问题描述】:

这是我的代码有问题。 问题是如果我使用“白色”来设置面板的背景,“图片”JLabel 中的图标颜色会变得很浅。 如果我改用“黑色”,则 pic JLabel 的颜色是可见的。 我在图片 JLabel 中使用什么颜色并不重要。一旦面板设置为白色,它们都会变亮。

有没有其他方法可以设置面板的背景颜色而不影响其中 JLabel 的颜色?

Color black = new Color( 20, 20, 20, 255 );
Color white = new Color( 255, 255, 255, 255 );

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize( 1200, 500 );
frame.setVisible(true);
frame.getRootPane().setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK));
frame.setLocationRelativeTo( null );
frame.setResizable( false );

JPanel panel= new JPanel();
frame.getContentPane().add( panel );
panel.setLayout( null );
panel.getAccessibleContext().setAccessibleName("panel");
panel.getAccessibleContext().setAccessibleDescription(" ");

// this is the line that causes problem
panel.setBackground( black );


JLabel pic = new JLabel( new ImageIcon( showBaseImage() ) );
panel.add( pic );
pic.setSize( 1200, 500 );
pic.setLocation( 1, 1);
pic.setBackground( black );


public BufferedImage showBaseImage(){
BufferedImage c = new BufferedImage( 1200, 500, BufferedImage.TYPE_INT_ARGB );
Graphics2D gg= c.createGraphics();
gg.setPaint( new Color( 125, 0, 125, 255  ));
gg.fillRect( 0,0, c.getWidth(), c.getHeight() );

gg.setPaint( new Color( 255, 255, 225, 255  ));
imgFont = new Font( "Arial", Font.BOLD, 45 );
gg.setFont( imgFont );

gg.drawString( "Write something", 20, 20 );
gg.dispose();
return c;
}

【问题讨论】:

    标签: java panel jlabel


    【解决方案1】:

    您可以使用 label.setOpaque(true) 让您的标签不透明。 它的实现来自JComponent,默认为false。

    请注意,默认情况下标签不是不透明的。如果您需要绘制标签的背景,建议您将其 opacity 属性设置为“true”。以下代码 sn -p 显示了如何执行此操作。

    label.setOpaque(true);
    

    https://docs.oracle.com/javase/tutorial/uiswing/components/label.html

    【讨论】:

    • 你是个天才!非常感谢
    • 太多了 :) 这是 Swing 的常见技巧。如果回复解决了您的问题,请考虑接受它:)
    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2021-08-29
    • 2013-06-19
    • 2013-02-28
    • 1970-01-01
    • 2013-01-07
    相关资源
    最近更新 更多