java Component的paint(g)方法怎么用?
取得画面中一个panel,调用paint(g)方法把组件画在图片上,g是bufferImage的graphics,为什么画上去的还有其他panel的组件?(被画上的组件是...
取得画面中一个panel,调用paint(g)方法把组件画在图片上,g是bufferImage的graphics,为什么画上去的还有其他panel的组件?(被画上的组件是动态更新的)
不是很懂这个,也风不清楚是awt的还是swing的。请高人指点下!
谢谢! 展开
不是很懂这个,也风不清楚是awt的还是swing的。请高人指点下!
谢谢! 展开
1个回答
展开全部
此方法,应该在绘制组件的内容时调用此方法;例如首次显示组件或者组件已损坏并需要修复时。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);
}
}
想对它深入了解参考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);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询