【发布时间】:2013-05-26 03:22:31
【问题描述】:
我已经按照JFrame 中的代码进行绘制。
package march_2013;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Question7 extends JFrame {
public void paint(Graphics g) {
int[] x = new int[] { 10, 60, 360, 410, 210, 210, 260, 210, 190, 160,
190, 190 };
int[] y = new int[] { 200, 250, 250, 200, 200, 180, 180, 100, 100, 160,
160, 200 };
g.drawPolygon(x, y, x.length);
g.drawLine(190, 100, 190, 180);
g.drawLine(210, 100, 210, 180);
}
public static void main(String[] args) {
Question7 window = new Question7();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(440, 40, 420, 400);
window.setVisible(true);
}
}
它工作正常,提供以下输出。
但我最大化 JFrame,图像被重新绘制。但旧图依旧。
如何解决这个问题?谢谢!
【问题讨论】:
-
1) 不要在
JFrame等顶级容器中进行绘制,而是添加JPanel并在paintComponent(Graphics)方法中进行自定义绘制。还为自定义组件返回一个合理的首选大小,以协助布局管理器。 2)不要设置顶级容器的大小。而是布局内容并致电pack()。 -
好的....我也会这样
标签: java swing graphics jframe paint