效果:
代码:
package Test;
import javax.swing.*;
import java.awt.*;
public class TestFrame extends JFrame {
public TestFrame(){
add(new NewPanel());
}
public static void main(String[] args) {
TestFrame frame=new TestFrame();
frame.setTitle("TestPaintComponent");
frame.setSize(200,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class NewPanel extends JPanel{
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawLine(0,0,50,50);
g.drawString("Banner",0,40);
}
}
讲解
第一次生成或者重新生成窗体的时候,会自动调用paintComponent方法重新绘制图像, super.paintComponent(g);是为了确保清空之前画图的区域。
g.drawLine(0,0,50,50);
画一条从(0,0)到(50,50)的直线
g.drawString("Banner",0,40);
在(40,0)的地方绘制字符串“Banner”
protected void paintComponent(Graphics g)
为什么把paintComponent设置为protected,因为JVM会调用paintComponent在组件上画画,用户用不着调用这个方法,所以设置为protected就够了。