关于如何向JPanel添加渐变有几篇帖子,但他们都假设我们从头开始编写JPanel。任何人都可以解释如何向使用NetBeans GUI构建器构建的JPanel添加渐变吗? (我是一个Java新手......对Processing更有经验,所以如果你不介意回答好像我已经九岁了......)。
我有一个名为“Home”的JPanel,我想放一个渐变。在NetBeans中,在Customize Code菜单选项下,我可以看到:
Home.setBackground(new java.awt.Color(153,204,255));
这里有几篇关于此代码变体的帖子:
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
int w = getWidth();
int h = getHeight();
GradientPaint gp = new GradientPaint(
0, 0, Color.white,
0, h, Color.black);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
}
但我在哪里放这个,以及如何将它附加到我的主页面板?那是什么意思?
感谢您的时间。
答案 0 :(得分:2)
您必须制作自己的面板类并扩展JPanel。我从未使用NetBeans GUI构建器来了解您是否可以使用它添加自定义组件。 g
指的是作为方法参数的Graphics对象。
public class GradientPanel extends JPanel {
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g.create();
int w = getWidth();
int h = getHeight();
GradientPaint gp = new GradientPaint(
0, 0, Color.white,
0, h, Color.black);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
g2d.dispose();
}
}
然后只使用GradientPanel而不是JPanel。
如果您想了解这幅画,请参阅相关教程,但您可以或多或少地复制并粘贴该代码并使用它:
http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html
答案 1 :(得分:0)
NetBeans GUI Builder不希望使用除缺省参数之外的任何构造函数。因此,如果需要构造函数的参数,JPanel的扩展将很难使用。需要覆盖paintComponent(),并且需要定义默认构造函数。 要使用下面的代码(从上面改编),在“源包”下的项目中创建一个文件夹,并在下面添加类文件。从调色板拖放到设计画布上。
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GradientPaint;
import java.awt.Color;
public class GradientPanel extends JPanel {
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g.create();
int w = getWidth();
int h = getHeight();
GradientPaint gp = new GradientPaint(0, 0, Color.white, 0, h, Color.black);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
g2d.dispose();
}
public GradientPanel(){
// added default constructor
}
}