下面构造函数中只是new了一个NewPanel, 为什么会调用paintComponent,还有里面的Graphics g又是什么意思?
importjavax.swing.*;importjava.awt.Graphics;importjavax.swing.JPanel;publicclassTestP...
import javax.swing.*;
import java.awt.Graphics;
import javax.swing.JPanel;
public class TestPaintComponent extends JFrame {
/**
* @param args
*/
public TestPaintComponent(){
add(new NewPanel());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestPaintComponent frame = new TestPaintComponent();
frame.setSize(200, 100);
frame.setTitle("TestFigurePANEL");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
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);
}
} 展开
import java.awt.Graphics;
import javax.swing.JPanel;
public class TestPaintComponent extends JFrame {
/**
* @param args
*/
public TestPaintComponent(){
add(new NewPanel());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestPaintComponent frame = new TestPaintComponent();
frame.setSize(200, 100);
frame.setTitle("TestFigurePANEL");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
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);
}
} 展开
2个回答
展开全部
class NewPanel extends JPanel {
// 我们的类 NewPanel 提供一个与父类 JPanel 完全相同名称和参数的方法,替换掉父类的,它的功能如下,原来 new JPanel () 时会做的 paintComponent 的事情,现在有替换它的 NewPanel 里面的 paintComponent 来做,这个 paintComponent 字面翻译成中文是“喷绘一个图形组件”,一个界面上的按钮之类的图形组件并不是天生会自动出现在窗口中,而是由 paintComponent 画出来的:
protected void paintComponent(Graphics g) { // g 是图形设置的接口,用它来画 g.paintXXX。
super.paintComponent(g); // 原来的 JDK 自带的 panel 干的事情,也就是画个灰色(默认主题)的板
g.drawLine(0, 0, 50, 50); // 我们在默认地画完一个画板后再加条从 (0,0) 到 (50,50) 的斜线。
g.drawString("Banner", 0, 40); // 然后再在 (0,40) 位置写下一个字符串 Banner.
}
}
// 我们的类 NewPanel 提供一个与父类 JPanel 完全相同名称和参数的方法,替换掉父类的,它的功能如下,原来 new JPanel () 时会做的 paintComponent 的事情,现在有替换它的 NewPanel 里面的 paintComponent 来做,这个 paintComponent 字面翻译成中文是“喷绘一个图形组件”,一个界面上的按钮之类的图形组件并不是天生会自动出现在窗口中,而是由 paintComponent 画出来的:
protected void paintComponent(Graphics g) { // g 是图形设置的接口,用它来画 g.paintXXX。
super.paintComponent(g); // 原来的 JDK 自带的 panel 干的事情,也就是画个灰色(默认主题)的板
g.drawLine(0, 0, 50, 50); // 我们在默认地画完一个画板后再加条从 (0,0) 到 (50,50) 的斜线。
g.drawString("Banner", 0, 40); // 然后再在 (0,40) 位置写下一个字符串 Banner.
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询