如何在Java中實現JPanel的paintComponent()方法?\n


JPanel是一個輕量級容器,它是Java中的一個不可見元件。JPanel的預設佈局是FlowLayout。建立JPanel後,可以透過呼叫其從Container類繼承的add()方法將其他元件新增到JPanel物件中。

paintComponent()

此方法用於在JPanel上繪製除繪製背景顏色之外的其他內容。此方法已存在於JPanel類中,因此我們需要使用super宣告向此方法新增內容,並以Graphics物件作為引數。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);
      // draw Eyes
      g.setColor(Color.BLACK);
      g.fillOval(55, 65, 30, 30);
      g.fillOval(135, 65, 30, 30);
      // draw Mouth
      g.fillOval(50, 110, 120, 60);
      // adding smile
      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);
   }
}

輸出

更新於: 2020年2月7日

6K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告