package org.mrtwo;
import java.awt.*;
import javax.swing.*;
import java.util.*;import javax.swing.JPanel;
public class Tree extends JFrame{
MyPanel jp;
public static void main(String args[])
{
Tree tree = new Tree();
}
public Tree()
{
jp = new MyPanel();
this.add(jp);
this.setSize(1300,740);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class MyPanel extends JPanel
{
int flag=0;
public void paint(Graphics g)
{
if(flag == 0)
{
g.drawRect(0,0,100,100);
flag++;
}else
{
g.drawRect(200, 200, 100, 100);
}
}
}
java 中组件的paint方法在启动显示的时候会调用两次吗?上面代码中在eclipse中运行的时候,只会绘制第二个矩形,这说明paint调用了第二次,但据我拙见只有在窗口最小化最大化、大小改变、调用repaint方法才调用paint方法,第一次运行怎么就调用两次呢,什么原因呢。怎么解决呢、求大神指教!!paintJava绘制图形
import java.awt.*;
import javax.swing.*;
import java.util.*;import javax.swing.JPanel;
public class Tree extends JFrame{
MyPanel jp;
public static void main(String args[])
{
Tree tree = new Tree();
}
public Tree()
{
jp = new MyPanel();
this.add(jp);
this.setSize(1300,740);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class MyPanel extends JPanel
{
int flag=0;
public void paint(Graphics g)
{
if(flag == 0)
{
g.drawRect(0,0,100,100);
flag++;
}else
{
g.drawRect(200, 200, 100, 100);
}
}
}
java 中组件的paint方法在启动显示的时候会调用两次吗?上面代码中在eclipse中运行的时候,只会绘制第二个矩形,这说明paint调用了第二次,但据我拙见只有在窗口最小化最大化、大小改变、调用repaint方法才调用paint方法,第一次运行怎么就调用两次呢,什么原因呢。怎么解决呢、求大神指教!!paintJava绘制图形
还有,绘图函数不推荐使用paint,而是paintComponent,这样可以使用Swing提供的双缓冲功能
class MyPanel extends JPanel
{
int flag=0; @Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(flag == 0)
{
g.drawRect(0,0,100,100);
flag++;
}else
{
g.drawRect(200, 200, 100, 100);
}
}
}
你好,那个paint函数会根据需要调用多次是什么意思呢,就拿我上面的代码来说,为什么是调用了两次呢?求解,谢谢~
这种就跟揭底的学习精神。。额~ 我不是很支持~ 电脑方面的内容海去了~ 当初我学到这里 也发现了这个问题~但是我选择的是相信 java 或者说sun 有提供我们其他的解决方案~ 或者可以用其他 java的处理方式来解决这个问题~ 我只会开车~ 还没深入到车里面怎么造的问题~ 所以帮不了你~ sorry~