我想向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);
}
}
任何幫助,我可以得到讚賞。
請參閱編輯以回答。 –