Vì sao Class GamePanel không có Constructor? Phương thức Paint là gì?

Dạ có anh chị hay bạn nào cho mình hỏi ở Class GamePanel này thì mình đã extends nó từ lớp JPanel này ạ , nhưng cái Phương thức public void paint(Graphics h){} kia nó từ đâu ra ạ , hay nó kế thừa từ JPanel ạ ? và tại sao ở Class GamePanel này lại không có Contructor như các lớp GameFrame ạ ?

package userinterface;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class GameFrame extends JFrame {
	public static final int SCREEN_WIDTH=1000;
	public static final int SCREEN_HEIGHT=600;
public GameFrame() {
	Toolkit toolkit=this.getToolkit();
	Dimension dimension=toolkit.getScreenSize();
	this.setBounds((dimension.width-SCREEN_WIDTH)/2,(dimension.height-SCREEN_HEIGHT)/2,SCREEN_WIDTH,SCREEN_HEIGHT);
    GamePanel gamePanel=new GamePanel();
    add(gamePanel);}
public static void main (String args[]) {	
	GameFrame gameFrame=new GameFrame();
	gameFrame.setVisible(true);
}
}
package userinterface;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class GamePanel extends JPanel {
public void paint(Graphics h) {
	h.setColor(Color.GREEN);
	h.fillRect(0, 0, GameFrame.SCREEN_WIDTH, GameFrame.SCREEN_HEIGHT);
}
}

Nó là ở Class jComponent bạn nhé. jPanel được kế thừa từ lớp jComponent nên cũng kế thừa nó luôn :smile:

Nó sẽ lấy theo Contructor của jPanel vì kế thừa nhỉ.

2 Likes

paint kế thừa từ jPanel kế thừa từ jComponent vậy thì jComponent là lớp ông nội rồi , thế nào e tìm mãi k thấy paint trong jPanel

1 Like

mình không biết biết rõ Java lắm, nhưng mình nghĩ là nó được người code đoạn này viết ra =))

mình nghĩ là nó không có Contructor vì nó không được viết

Nếu không khai báo hàm dựng thì nó sẽ tự động có 1 hàm dựng mặc định không tham số, và trong hàm dựng đó không làm gì hết, ngoài việc tạo thực thể của lớp.

public class A{
   int x;
   int y;
}

// Tương đương với:

public class A{
   int x;
   int y;
   public A(){} // Hàm dựng mặc định
}

public void paint(Graphics g){} được kế thừa như các bạn trên đã nêu.
Nhờ vào việc ghi đè và lấy được thực thể của Graphics (hình như ở JPanel nó là Graphics2D) dùng để vẽ các nội dung trên JComponent này.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?