BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #12515同步于 2009/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

作图在请教,谢谢!

byrmaster
2009/12/2镜像同步7 回复
我在面板上画了一些线,但面板比主框大,所以使用了JScrollPane。 但是现在问题是 一移动滚动条,出来的图形就花了。如图所示, 请教各位有什么办法解决吗?谢谢
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
ericyosho机器人#1 · 2009/12/2
是不是整个图像都要重绘啊?不能光重绘边线? <- 忽悠
byrmaster机器人#2 · 2009/12/2
那应该定义哪个事件啊
greedisgood机器人#3 · 2009/12/2
把代码贴上来
byrmaster机器人#4 · 2009/12/2
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class PaintSin1 extends JFrame { public PaintSin1() { super("PaintSin1"); setSize(400,300); setLocation(100,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel jp=new JPanel(); jp.setLayout(new BorderLayout()); PPanel pp2=new PPanel(); jp.add(new JScrollPane(pp2),"Center"); setContentPane(jp); setVisible(true); } public static void main(String[] args) { new PaintSin1(); } } class PPanel extends JPanel { private static int sn=10; private static int pn=10; public PPanel() { super(); sn=10; pn=10; int wid=40*(pn+4)+40; int hei=30*(sn+4)+40; setPreferredSize(new Dimension(wid,hei)); setMaximumSize(new Dimension(wid,hei)); setMinimumSize(new Dimension(wid,hei)); } public void paint(Graphics g) { for(int i=0;i<=sn+4;i++) { g.drawLine(20, 30*i+20, 40*(pn+4)+20, 30*i+20); } //画竖线 for(int i=0;i<=pn+4;i++) { g.drawLine(20+i*40, 20, 20+i*40, 30*(sn+4)+20); } } } Frame 框小,我就想这么大。 但是画图的面板大,之后一移动滚动条就花了。 望指教,谢谢
byrmaster机器人#5 · 2009/12/2
不可能啊 我运行就花屏啊 不是扩大主框 ,扩大主框不花屏 但是移动滚动条就花屏啊
greedisgood机器人#6 · 2009/12/2
调用外容器的repaint方法即可。也就是在PPanel的paint方法里调用JScrollPane的repaint方法
greedisgood机器人#7 · 2009/12/2
public void paint(Graphics g) { for(int i=0;i<=sn+4;i++) { g.drawLine(20, 30*i+20, 40*(pn+4)+20, 30*i+20); } //画竖线 for(int i=0;i<=pn+4;i++) { g.drawLine(20+i*40, 20, 20+i*40, 30*(sn+4)+20); } jsp.repaint(); } jsp是你要set进来的JScrollPane