如何为JPanel创建渐变?另外,在Java中如何调用类中的类?
我正在制作一个JavaGUI,我在互联网上搜索了2个小时,了解如何为JPanel生成渐变。下面的代码是我所拥有的,但是当运行时渐变不会显示。怎么了 我在互联网上试过很多类似问题的帖子,但都不起作用。我尝试过很多版本,但我也不知道如何在类中运行类。有人能帮我吗如何为JPanel创建渐变?另外,在Java中如何调用类中的类?,java,swing,jpanel,gradient,Java,Swing,Jpanel,Gradient,我正在制作一个JavaGUI,我在互联网上搜索了2个小时,了解如何为JPanel生成渐变。下面的代码是我所拥有的,但是当运行时渐变不会显示。怎么了 我在互联网上试过很多类似问题的帖子,但都不起作用。我尝试过很多版本,但我也不知道如何在类中运行类。有人能帮我吗 class TestPanel extends JPanel{ @Override protected void paintComponent(Graphics g) { super.paintCompone
class TestPanel extends JPanel{
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
int w = getWidth();
int h = getHeight();
Color color1 = Color.BLUE;
Color color2 = Color.GREEN;
GradientPaint gp = new GradientPaint(0, 0, color1, 0, h, color2);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
}
} //this is nested within the main class
//一些代码
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
CreateGUI cg = new CreateGUI();
cg.create(); //previous method (not mentioned here)
CreateGUI.TestPanel tp = cg.new TestPanel(); //problem
JPanel panel = new JPanel();
f.add(panel);
f.setSize(800, 600);
f.setLocationRelativeTo(null);
f.getContentPane().setLayout(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
});
}
我希望有一个梯度,但没有;JPanel的背景仍然是白色的
TestPanel
的实例从未添加到任何内容中null
布局将阻止组件的大小和位置,因此即使您执行了上一步,您也不会看到任何内容您永远不会创建
TestPane
的实例,也不会将其添加到任何内容中。也不要使用null
布局
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.add(new TestPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
class TestPanel extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
int w = getWidth();
int h = getHeight();
Color color1 = Color.BLUE;
Color color2 = Color.GREEN;
GradientPaint gp = new GradientPaint(0, 0, color1, 0, h, color2);
g2d.setPaint(gp);
g2d.fillRect(0, 0, w, h);
g2d.dispose();
}
}
}