【发布时间】:2011-05-06 00:29:37
【问题描述】:
我有一个视图对象,它是一个 jPanel,并包含其他 jPanel,而这些 jPanel 又包含 jLabels。我想在对象上绘制一个渐变叠加层,使其具有漂亮的时尚外观,而不是无聊的朴素外观。
到目前为止,我的尝试是:
public class InfoDisplay extends javax.swing.JPanel {
@Override
public void paintComponent(Graphics g) {
UIDefaults uid = UIManager.getDefaults();
Graphics2D g2d = (Graphics2D)g;
int w = getWidth();
int h = getHeight();
Color lightBlue = new Color(41, 117, 200);
Color darkBlue = new Color(2, 47, 106);
if (!isOpaque()) {
super.paintComponent( g );
return;
}
GradientPaint gp = new GradientPaint(0, 0, lightBlue, 0, h, darkBlue );
g2d.setPaint(gp);
g2d.fillRect( 0, 0, w, h );
setOpaque( false );
super.paintComponent( g );
setOpaque( true );
}
}
这似乎根本没有改变对象背景。我对搞乱与 Gui 默认值无关的东西还很陌生。
我使用 Netbeans 中的 Gui 构建器来创建对象,因此 initComponents() 也在类中,但我只发布了与问题相关的源代码。
也许有人可以指出我正确的方向?
【问题讨论】:
-
你为什么要改变 JPanel 的不透明度。 JPanel 默认是不透明的,而 JComponent 不是。
-
确实,并且在paintComponent 方法中以一种有趣的方式进行操作。您可能想要发布一个说明您的问题的小型可编译和可运行程序的原始海报,sscce
-
我的意思是更改主 jPanel 顶部的 jPanel 的不透明度,以便可以查看渐变。谢谢大家的帮助
标签: java jpanel gradient paint