为了账号安全,请及时绑定邮箱和手机立即绑定

如果不用paint(),请问该如何调整程序?

如果不用paint(),请问该如何调整程序?

吃鸡游戏 2022-05-25 14:15:35
JAVA绘图可否不用paint() ?定义了绘图方法display(),绘制一个红色矩形:import javax.swing.*;import java.applet.*;import java.awt.*;import java.awt.event.*;public class Test extends JFrame {public java.awt.Graphics g1;public Test() {super();setSize(800, 800);Container container = getContentPane();container.setBackground(Color.black);setLocationRelativeTo(null);setVisible(true);g1 = getGraphics();display(g1);}public static void main(String[] args) {new Test();}public void display(Graphics gra) {gra.setColor(Color.red);gra.fillRect(200, 200, 300, 61);}}为什么屏幕上没有显示“红色矩形” ? display()没有起作用?
查看完整描述

2 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

你那种办法压根行不通,每隔一段时间或者触发什么事件都会导致Frame 重新绘制,它会自动调用paint方法和repaint。你的代码只会执行一次,被更新时会被擦除。只能使用paint或者repaint来实现

查看完整回答
反对 回复 2022-05-30
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

改成这样就可以


import javax.swing.*;import java.awt.*; public class Test extends JFrame {     public java.awt.Graphics g1;    private Color color;     public Test() {        super();        setSize(800800);        Container container = getContentPane();        container.setBackground(Color.black);        setLocationRelativeTo(null);        setVisible(true);        g1 = getGraphics();         setColor(Color.red);    }     @Override    public void repaint() {        super.repaint();        getContentPane().setBackground(color);    }     public void setColor(final Color color){        this.color = color;        repaint();    }      public static void main(String[] args) {        new Test();    } }



查看完整回答
反对 回复 2022-05-30
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信