下面构造函数中只是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);
}
}
展开
 我来答
jamxval
2012-09-29 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1424万
展开全部
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.
}
}
seeme1025
2012-09-27 · 超过29用户采纳过TA的回答
知道答主
回答量:154
采纳率:0%
帮助的人:97.6万
展开全部
....这个方法是在JPanel构建的时候,由虚拟机隐式调用.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式