public void paint(Graphics g){
super.paint(g);
g.drawImage(imagenFondo, 0, 0, getWidth(), getHeight(), this);
}
不要重写paint()。 Paint 方法负责绘制子组件。因此,您的代码绘制子组件,然后在组件之上绘制图像。
相反,对于组件的自定义绘制,您可以覆盖paintComponent()
的方法JPanel
:
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(imagenFondo, 0, 0, getWidth(), getHeight(), this);
}
阅读 Swing 教程中的部分仔细观察绘制机制 https://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html了解更多信息。
Edit:
阅读 Swing 教程的整个部分Custom Painting
。解决方案是在 JPanel 上进行自定义绘制,然后将面板添加到框架中。
框架的内容窗格是 JPanel。因此,您实际上将用绘制背景图像的自定义 JPanel 替换默认内容窗格。将自定义面板的布局设置为BorderLayout
它将像默认内容窗格一样工作。