我想向JFrame添加渐变背景。在JFrame中,我没有创建JPanel,而是使用了创建JFrame时自动添加的JPanel。我在网上找到的所有例子都在JPanel实例上调用paintComponent()
,但如前所述,在我的例子中,我没有具体实例化一个例子。我知道paintComponent()
需要在组件上调用,因此无法在JFrame上调用,那么是否需要创建并添加JPanel才能实现此目的?我以前用这种方式取得了成功,但我试图尽可能简化我的代码,所以如果我不需要,我不想创建第二个JPanel。这里是我有的代码:在默认JFrame面板上使用paintComponent()
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
JPanel pane;
public Main() {
int WIDTH = 700, HEIGHT = 400;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.GRAY);
setSize(WIDTH, HEIGHT);
setLocationRelativeTo(null);
pane = (JPanel) getContentPane();
pane.setOpaque(false);
pane.setLayout(new BorderLayout());
pane.setBorder(new EmptyBorder(20, 20, 20, 20));
// SOME OTHER STUFF
}
protected void paintComponent(Graphics grphcs) {
Graphics2D g2d = (Graphics2D) grphcs;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(0, 0, new Color(255, 195, 225), 0, getHeight(), new Color(139, 207, 236));
g2d.setPaint(gp);
paintComponent(grphcs);
}
}
任何帮助,我可以得到赞赏。
请参阅编辑以回答。 –