如何在 Java 中实现 JPanel 的 paintComponent() 方法?\
awtjavaobject oriented programmingprogrammingswing
JPanel 是一个轻量级容器,在 Java 中是一个不可见的组件。JPanel 的默认布局是 FlowLayout。创建 JPanel 后,可以通过调用从 Container 类继承的 add() 方法将其他组件添加到 JPanel 对象中。
paintComponent()
除了绘制背景颜色外,在 JPanel 上绘制其他内容时都需要此方法。此方法已存在于 JPanel 类中,因此我们需要使用 super 声明向此方法添加一些内容,并以 Graphics objects 作为参数。必须在第一行调用 super.paintComponent() ,它表示 JPanel 的正常 paintComponent() 方法,它只能处理面板的背景。
语法
protected void paintComponent(Graphics g)
示例
import java.awt.*; import javax.swing.*; public class SmileyApp extends JPanel { @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.YELLOW); g.fillOval(10, 10, 200, 200); // 画眼睛 g.setColor(Color.BLACK); g.fillOval(55, 65, 30, 30); g.fillOval(135, 65, 30, 30); // 画嘴巴 g.fillOval(50, 110, 120, 60); // 添加微笑 g.setColor(Color.YELLOW); g.fillRect(50, 110, 120, 30); g.fillOval(50, 120, 120, 40); } public static void main(String[] args) { SmileyApp smiley = new SmileyApp(); JFrame app = new JFrame("Smiley App"); app.add(smiley, BorderLayout.CENTER); app.setSize(300, 300); app.setLocationRelativeTo(null); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); app.setVisible(true); } }