JAVA新定义的绘图方法(不是paint()),图画无法留存。
JAVA绘图可否不用paint()?定义了绘图方法display(),绘制一个红色矩形:importjavax.swing.*;importjava.applet.*;i...
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()没有起作用?
不用paint(),如何调整程序?使display()的图画可以留存。 展开
定义了绘图方法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()没有起作用?
不用paint(),如何调整程序?使display()的图画可以留存。 展开
2个回答
展开全部
你那种办法压根行不通,每隔一段时间或者触发什么事件都会导致Frame 重新绘制,它会自动调用paint方法和repaint。你的代码只会执行一次,被更新时会被擦除。只能使用paint 或者repaint 来实现
追问
哦。
如果需要在屏幕四边,显示不同的内容(功能差别很大)。
这种思路:定义四个方法disp1()、disp2()、disp3()、disp4(),按需分别调用。 这种思路是错误的?
只能定义一个方法paint(),然后在paint()中switch……case四路分支实现?
追答
是的,在调用paint()方法之前frame上绘制的所有东西会被擦除。这是没办法的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成这样就可以
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();
}
}
追问
你好。
没有display()方法
没画fillRect(200, 200, 300, 61);
可否不用paint()、repaint() ?
追答
我看你的代码只是设置背景颜色而已。所以就这样写了。实际上setBackGround和fillRect只是API调用不太一样。其他都差不多
二,不能没有repaint()方法,因为你需要动态的改变SWING界面,没有repaint就不能刷新。显示的效果会很奇怪
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询