graphics画图显示不出来,求解决

时间:2021-09-07 08:50:15

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;


public class TempTest {

public static void main(String[] args) {
Frame f = new Frame();
Panel p= new Panel();
f.setVisible(true);
f.setBounds(100, 100, 400, 400);
f.add(p);
Graphics g = p.getGraphics();
g.drawRect(100, 100, 100, 100);

}

}


为什么矩形不显示,就只有一个空白框?

8 个解决方案

#1


重写一下panel 的 paint方法,在里面画图,应该是可以的

#2


引用 1 楼 jintianhen1 的回复:
重写一下panel 的 paint方法,在里面画图,应该是可以的
这样是可以画图,但是这样画出来的图不就写死了么,我要的是先new 出来一个panel,然后再画图,可以随时添加图元的,怎么实现?

#3


你想填充这个矩形框么?
g.setColor(Color.red);
g.filRect(100,100,100,100);

#4


public class TempTest {
 
    public static void main(String[] args) {
        Frame f = new Frame();
        Panel p= new Panel() {

@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
        g.drawRect(100, 100, 100, 100);
}
        
        };
        f.setVisible(true);
        f.setBounds(100, 100, 400, 400);
        f.add(p);
    }
}

一点建议,使用Swing组件,不要再用AWT组件了!
JFrame and JPanel

#5


引用 3 楼 wqguanmu 的回复:
你想填充这个矩形框么?
g.setColor(Color.red);
g.filRect(100,100,100,100);
是我表述有歧义,我的意思是只有一个frame,里面什么都没有,矩形没有画出来

#6


引用 4 楼 jia20003 的回复:
public class TempTest {
 
    public static void main(String[] args) {
        Frame f = new Frame();
        Panel p= new Panel() {

@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
        g.drawRect(100, 100, 100, 100);
}
        
        };
        f.setVisible(true);
        f.setBounds(100, 100, 400, 400);
        f.add(p);
    }
}

一点建议,使用Swing组件,不要再用AWT组件了!
JFrame and JPanel
我知道这样能画出来,但是我在程序执行的过程中,想往这块添加图形,怎么做呢

#7


添加图形的话,你需要使用数据结构来记录,然后在
public void paint(Graphics g) 中读取数据结构然后绘制
改变数据结构的时候,再调一下repaint();

不要使用结构化的方法来添加图形...

#8


你没有执行重绘 graphics画图显示不出来,求解决

#1


重写一下panel 的 paint方法,在里面画图,应该是可以的

#2


引用 1 楼 jintianhen1 的回复:
重写一下panel 的 paint方法,在里面画图,应该是可以的
这样是可以画图,但是这样画出来的图不就写死了么,我要的是先new 出来一个panel,然后再画图,可以随时添加图元的,怎么实现?

#3


你想填充这个矩形框么?
g.setColor(Color.red);
g.filRect(100,100,100,100);

#4


public class TempTest {
 
    public static void main(String[] args) {
        Frame f = new Frame();
        Panel p= new Panel() {

@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
        g.drawRect(100, 100, 100, 100);
}
        
        };
        f.setVisible(true);
        f.setBounds(100, 100, 400, 400);
        f.add(p);
    }
}

一点建议,使用Swing组件,不要再用AWT组件了!
JFrame and JPanel

#5


引用 3 楼 wqguanmu 的回复:
你想填充这个矩形框么?
g.setColor(Color.red);
g.filRect(100,100,100,100);
是我表述有歧义,我的意思是只有一个frame,里面什么都没有,矩形没有画出来

#6


引用 4 楼 jia20003 的回复:
public class TempTest {
 
    public static void main(String[] args) {
        Frame f = new Frame();
        Panel p= new Panel() {

@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
        g.drawRect(100, 100, 100, 100);
}
        
        };
        f.setVisible(true);
        f.setBounds(100, 100, 400, 400);
        f.add(p);
    }
}

一点建议,使用Swing组件,不要再用AWT组件了!
JFrame and JPanel
我知道这样能画出来,但是我在程序执行的过程中,想往这块添加图形,怎么做呢

#7


添加图形的话,你需要使用数据结构来记录,然后在
public void paint(Graphics g) 中读取数据结构然后绘制
改变数据结构的时候,再调一下repaint();

不要使用结构化的方法来添加图形...

#8


你没有执行重绘 graphics画图显示不出来,求解决