当前位置:编程学习 > JAVA >>

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

取得画面中一个panel,调用paint(g)方法把组件画在图片上,g是bufferImage的graphics,为什么画上去的还有其他panel的组件?(被画上的组件是动态更新的) 不是很懂这个,也风不清楚是awt的还是swing的。请高人指点下! 谢谢!
答案:此方法,应该在绘制组件的内容时调用此方法;例如首次显示组件或者组件已损坏并需要修复时。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);
}
}

上一个:在eclipse中,我怎么不能创建android项目,到底是那里出错了,我实在看不出来了,求各位帮帮忙
下一个:为什么我的java装在D盘了可是 打开cmd 输入java -verson之后会是这样

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,