猿问

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

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()没有起作用?

吃鸡游戏
浏览 104回答 2
2回答

白板的微信

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

慕运维8079593

改成这样就可以import javax.swing.*;import java.awt.*; public class Test extends JFrame {     public java.awt.Graphics g1;    private Color color;     public Test() {        super();        setSize(800, 800);        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();    } }
随时随地看视频慕课网APP
我要回答