java Component的paint(g)方法怎么用?

取得画面中一个panel,调用paint(g)方法把组件画在图片上,g是bufferImage的graphics,为什么画上去的还有其他panel的组件?(被画上的组件是... 取得画面中一个panel,调用paint(g)方法把组件画在图片上,g是bufferImage的graphics,为什么画上去的还有其他panel的组件?(被画上的组件是动态更新的)
不是很懂这个,也风不清楚是awt的还是swing的。请高人指点下!
谢谢!
展开
 我来答
枫叶伊始
2012-08-15
知道答主
回答量:19
采纳率:0%
帮助的人:23.4万
展开全部
此方法,应该在绘制组件的内容时调用此方法;例如首次显示组件或者组件已损坏并需要修复时。Graphics 参数中的剪贴区矩形设置为需要绘制的区域。重写此方法的 Component 子类不需要调用 super.paint(g)。 出于性能的考虑,首次显示宽度或高度为 0 的 Component 时认为它不需要进行绘制,并且也不需要修复。
想对它深入了解参考sun的官网:http://java.sun.com/products/jfc/tsc/articles/painting/index.html
另外,对于Java的GUI组件其实现在就没人学了,没什么用。给你点建议,不用下太大本。B/S现在才是王道。至于他嘛,简单了解会用就行!一般与画布连用 。这点在B/S系统上至多是生成验证码时用下,一般不用写,网上很多生成验证码的方法。
你把下面的代码放进eclipse运行下,体验体验(可能有助于你理解):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonDemo extends JPanel implements ActionListener{
JButton b1,b2;
String message="请点击按钮";
int row=50,col=50;

public ButtonDemo(){
//按钮1
b1=new JButton("First Button");
b1.setActionCommand("first");
b1.addActionListener(this);
//按钮2
b2=new JButton("Second Button");
b2.setActionCommand("second");
b2.addActionListener(this);

add(b1);
add(b2);
}

public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("first")){
message="第一个按钮被按下!";
row=50;
col=50;
}else if(e.getActionCommand().equals("second")){
message="第二个按钮被按下!";
row=50;
col=150;
}
repaint(); //注意这一行
}

public void paintComponent(Graphics g){
super.paintComponent(g); //注意这一行
g.drawString(message, col, row);
}

public static void main(String args[]){
JFrame jf=new JFrame("按钮测试!");
jf.getContentPane().add(new ButtonDemo());
jf.setSize(300,200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式