JPanel เป็นคอนเทนเนอร์เบา (lightweight) และเป็น คอมโพเนนต์ที่มองไม่เห็น Layout เริ่มต้นคือ FlowLayout หลังสร้าง JPanel แล้ว เพิ่มคอมโพเนนต์อื่นได้ด้วยเมธอด add() ที่สืบทอดจาก Container
paintComponent()
เมธอดนี้จำเป็นสำหรับวาดบน JPanel นอกจากสีพื้นหลัง เมธอดนี้มีอยู่ใน JPanel แล้ว ต้องใช้ super เพื่อเพิ่มฟังก์ชัน และรับพารามิเตอร์ Graphics object ต้องเรียก super.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);
}
}
ผลลัพธ์
