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来实现
慕运维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( 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(); } } |
添加回答
举报
0/150
提交
取消