java Component的paint(g)方法怎么用?
取得画面中一个panel,调用paint(g)方法把组件画在图片上,g是bufferImage的graphics,为什么画上去的还有其他panel的组件?(被画上的组件是动态更新的) 不是很懂这个,也风不清楚是awt的还是swing的。请高人指点下! 谢谢!
取得画面中一个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之后会是这样