200分悬赏解决java repaint()保存前一步操作问题

作者&投稿:太凝 (若有异议请与网页底部的电邮联系)
java 的 repaint() 问题~

最好能把代码发出来看一看
我刚才测试了:不是paint() 函数非得和调用它的 repaint() 写在一个类里面

repaint()方法是刷新当前的面板显示,你先作图后repaint就相当于 1+2=3
1是原图,2是修改动作,repaint相当于“=”,结果显示出的图形就是3

两种方案。一种保存坐标,打开的时候就是拿坐标数据来重新画出来,这个值适合线条不是特别多的图,否则会影响速度。
另外一种就是双缓冲,就是每在屏幕上画一笔,就把这一笔画到缓冲图上去,保存就可以直接保存缓冲图就可以了,但是这种没有保存线条数据,所以要是对图进行细致的处理就麻烦点了,可缓冲图在线条特别多的时候,速度影响不大。
你说的画图只显示一个的问题,我不知道你是用缓冲图来画图,还是直接在控件上画的。如果是直接画,你就要保存所有的画出来的图形数据,每次重画都要把以前画过的东西重新画一遍,如果你只画最后一次的那就只有最后一次的了。你可能就是出现的是这种错误吧。 如果不对图进行很细致的操作建议你缓冲图,只在缓冲图上画,然后把图贴上去,这个可能会有闪烁出来。当然也可以采用两个结合,保存用缓冲图,画则是直接画。。

//////有个小例子....但是是画一堆矩形的 呵呵~~~
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.*;

public class TestDraw {

Random r = new Random();

MyFrame mf = new MyFrame("Test");

JPanel pan = new JPanel();

JButton jb = new JButton("Draw");

JButton jbc = new JButton("Clear");

Graphics g = null;

public void init() {
jbc.setBounds(160, 30, 100, 30);
jb.setBounds(30, 30, 100, 30);
pan.setBounds(30, 80, 740, 450);
pan.setBackground(Color.WHITE);
mf.getContentPane().add(jb);
mf.getContentPane().add(pan);
g = pan.getGraphics();
mf.getContentPane().add(jbc);
jbc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pan.setBackground(Color.WHITE);
pan.repaint();
}
});

jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
draw();
}

});
}

public void draw() {
int x = r.nextInt(700);
int y = r.nextInt(400);
int width = r.nextInt(360);
int height = r.nextInt(220);
if (g != null)
g.draw3DRect(x, y, width, height, true);

}

public static void main(String[] args) {

new TestDraw().init();

}

}

class MyFrame extends JFrame{

private static final long serialVersionUID = 1L;
private int width = 800;
private int height = 600;
private static Toolkit kit = Toolkit.getDefaultToolkit();

public MyFrame() {
this.defaultInit();
}

public MyFrame(String title) {
super(title);
this.defaultInit();
}

public MyFrame(String title, int width, int height) {
this(title);
this.width = width;
this.height = height;
this.defaultInit();
}

private void defaultInit() {
Dimension d = kit.getScreenSize();
this.setLayout(null);
this.setSize(width, height);
this.setLocation((int)(d.getWidth() - width) / 2, (int)(d.getHeight() - height) / 2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {
new MyFrame("Come");
}

public static Toolkit getKit() {
return kit;
}

}

你只是把画了的图形放在缓存中,并没有保存起来。如果你想它保存起来,要么建立一个数据库,把你的图形的参数都保存都数据库里面;这样你第一个,第二个,甚至第三个图形都可以读出来;要么你开辟多一个缓存,存放你第一个图形,当你画第二个图形后,你可以通过一个按钮,显示第一个图形出来。
建多一个实例保存第一个图的参数(x和y的值)就可以了。但我个人认为这样的问题使用数据库比较好。有GIS开发经验的朋友对这方面应该很熟悉了。

看不太懂。如果你要同时画方,圆,直线在屏幕上的话,就在同一个paint时一个一个都画上去。要把一幅图存起来用一个BufferedImage来画。

很简单的,把你画出的图形代码放入 repaint()这个函数就可以了
这个步揍叫重绘

在画一遍啊


再求封神演义OPの罗马音歌词LRC文件(根据答案悬赏)
[02:00.99]sono hitomi ni utsuru mirai [02:03.93]kanjiteru kara [02:06.79][02:08.41]yume no kuni wo sagasu kimi no na wo [02:12.38]dare mo ga kokoro ni kizamu made [02:16.45]guuzen ja nai unmei no naka de [02:20.43]kimi no kiseki wo shinjiteru [02:24.41]...

casio5382ja手表怎么调试
2、日历的调整 将表冠拉出两档,顺时针(如果没有星期显示,应逆时针)方向转动表冠调整日历。3、星期日历手表的调整 将表冠拉出两档,逆时针转动表冠调整星期,顺时针转动调整日历。4、注意事项 手表的日历、星期、月相之调整切勿在手表时间21:00PM—3:00AM之间操作,此期间日历功能正在进行运作,...

求星那歌呗(水树奈奈)的迷宫蝴蝶完整版
[03:07.09]见つめないで つかまえないで [03:13.71]迷い込んだ バタフライ [03:20.56]爱しすぎて 大切すぎて [03:27.12]壊れてしまう 私の胸の键 [03:47.72]探し続ける 自分のストーリー [03:54.62]运命に目隠しされても [04:00.80]この云を突...

VIN码LSGJA52U1BH003531中的LSG具体含义是什么
VIN码开头为LSG,是指上海通用生产的车辆。1)1~3位(WMI)制造厂、品牌和类型; 2)4~8位车辆特征;轿车种类、系列、车身类型、发动机类型及约束系统类型:MPV种类、系列、车身类型、发动机类型及车辆额定总重:载货车型号或种类、系列、底盘、驾驶室类型、发动机类型、制动系统及车辆额定总重;客车型号或种类...

试说明lsgja52u1bh003531中各字母与数字的含义。
LSGJA52U1BH003531中的各字母与数字的含义如下:LSG表示上海通用生产的车辆。1) WMI(1~3位)代表制造厂、品牌和类型。2) 4~8位代表车辆特征,包括轿车种类、系列、车身类型、发动机类型及约束系统类型;MPV种类、系列、车身类型、发动机类型及车辆额定总重;载货车型号或种类、系列、底盘、驾驶室类型...

...三包凭证上有写OMU373A03,保修卡上有写0J602JA00,这个能知道机子具体...
机器背面有型号标签,那个准确也简单,你说的这个是厂家防违编号 应该是ins14TR-3528S

西部数据硬盘序号的问题,JA10001007473P是什么盘?
“G”表示为转速拥有10000 RPM\/分,数据缓存为8MB的最高端桌面硬盘Raptor(猛禽)系列。第四部分表示接口类型。A--Ultra ATA66,B--Ultra ATA100,W表示应用于AV(数码影音)领域的硬盘,D表示为Serial ATA150接口 。附加编号部分 XX-X-X-XX 第一部分为OEM客户标识,00为零售市场,其它则为OEM...

新买的美的102电磁炉使用时跳出00:001到10是什么原因
在修理中常见的电磁炉大致分为两类: 由LM339(四电压比较器)输出脉冲信号。 1: 触发部分由正负两组电源,管子用PNPNPN组成,类似这种电路,后级大多是用大功率管多个复合而成,组成高压开关部分,在代换中,前一个用带阻尼的行管替代即可。后几个则很难找到特性一致的管子,解决的办法是在散热器安装孔允许的情况下改...

怎么分清ss501中每个人的声音
最好的办法就是多看他们的视频。你一下来把他们的视频都看完了。你就会懂分清了。其实他们的声音都很好认的。呵呵。只不过有时候很像而已。先说我最爱的小熊啦。奎钟的声音我觉得最好认。因为那孩子无论是说话还是唱歌都有气音。很明显。而且特别温柔。至于永生呢,是有点像女生,就是亨俊说的美声...

...在指定的时间输入文本框,比如在用微信微信网页版打开ja
\/\/创建一个定时器var tid = window.setInterval(function() { var now = new Date(); \/\/设置在下午17:00:00时触发 if(now.getHours()==17 && now.getMinutes()==00 && now.getSeconds()==00) { \/\/开始发送消息 document.getElementById("txt").value="您好"; \/...

揭东县18998859975: 200分悬赏解决java repaint()保存前一步操作问题 -
老界丙戊: 两种方案.一种保存坐标,打开的时候就是拿坐标数据来重新画出来,这个值适合线条不是特别多的图,否则会影响速度. 另外一种就是双缓冲,就是每在屏幕上画一笔,就把这一笔画到缓冲图上去,保存就可以直接保存缓冲图就可以了,但是...

揭东县18998859975: 200分高分悬赏如何自解IP -
老界丙戊: 1:此方法只对家庭用户有效.(因为是非固定IP)2:对使用外挂的无效.(人不要脸则无敌,你们这种人无药可救)3:有问题能自己动手的自己解决,不要再麻烦51管理员了,让他们有更多精力去改...

揭东县18998859975: 怎么悬赏200分
老界丙戊: 分三次完成200分悬赏的操作. 1)提问,设置悬赏-设置第一次最高悬赏-100分-提 交. 2)进入你的个人中心-我的“提问”-找到刚刚提交的 100分悬赏的问题-点击进入-点击提交悬赏用以增加问 题的关注率-选最高追加-50′-提交. 3)进入你的个人中心-我的“提问”-找到刚刚提交的 150分悬赏的问题-点击进入-点击提交悬赏用以增加问 题的关注率-选最高追加-50′-提交. 这样就完成了提问200分悬赏的操作.200′悬赏的前提 是你的积分至少要有200分,才可以进行此项操作.

揭东县18998859975: 为什么我不能悬赏200分? -
老界丙戊: 积分明细 总分: 152 回答得分: 230 奖励: 0 日常操作: 552 悬赏付出: -450 处罚和其他付出: -180 匿名提问: 0 你的总分才152,所以不能悬赏200分

揭东县18998859975: 怎么设置最高悬赏分
老界丙戊: 你好! 首先:2000分以上的悬赏分无法设置!这是规则! 其次:对一个问题,你最高只能设置200分的悬赏分,分三步来做,先设置100分,然后追加,每次最高只能追加50分,只能追加两次,这样三次一共就200分了,不过,在采纳答案时,你还可以再追加一次,最多50分,就是说,对于一个问题,你最多可以付出250分. 最后:为什么只能设置200分的悬赏分?因为怕某些人作弊(自问自答)或者故意送分.限制积分大幅度的转移. 谢谢浏览

揭东县18998859975: 200分悬赏!!!求电脑高手帮忙解决问题.菜鸟免进
老界丙戊: 哈哈哈!!!!我告诉你把, 应该是中毒了,EXE文件关联被病毒破坏,解决办法可以从以下几个方面试试: 方法一: 1.找到system32目录,将cmd.exe文件改成cmd.com文件(目的是使cmd能够运行,因为.exe文件不能执行了啊,改成.com...

揭东县18998859975: 懂电脑的大神们来看看,绝对高悬赏.200分,问题解决了还可以追加分.
老界丙戊: 电脑实在很老了1G 2代 667内存 现在已经淘汰 市面上都买不到了显卡也很一般 处理器4400+还凑合主要是 内存和显卡 没办法运行大型的3D游戏 没有那个运算能力DNF画面效果选低一点 也许可以但是CF和LOL 就别想了延迟取决于网速 而游戏画面卡取决于配置

揭东县18998859975: Java高手进,高分悬赏!!解决了再加500分!! -
老界丙戊: // 保存成: CircleCalc.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class CircleCalc extends JFrame{ public static void main(String[] args) { new CircleCalc().setVisible(true); } public CircleCalc(){ super("计算圆面积或...

揭东县18998859975: 200分悬赏彻底解决daemon403无法安装的问题. -
老界丙戊: 第一步,这也是解决DT问题最关键的一步,进入C盘删除Windows\System32\Drivers\dtscsi这个系统文件.网上有很多朋友说去下载sptdinst_x86(以下简称x86),这也没错,但是如果你不删除那个文件你是根本无法安装x86的.第二步,去下...

揭东县18998859975: 【高分悬赏】求解一道java小题、有图片、计算折扣、消费总金额、实际交费、找零、积分信息,输出即可,谢谢!
老界丙戊: 你这分还叫高?你这分数只够给你提供思路的. 思路1: 使用记事本创建文件,命名为pay2.java 思路2: tPrice(T血价格)ballPrice(网球价格)ballpaiPrice(网球拍价格) tNum(T血数量)ballNum(网球数量)ballpaiNum(网球拍数量) discount(折扣)finalPay(最终消费总额)returnMoney(找零) score(积分) 思路3:计算总金额和找零 消费金额=单价*个数*折扣 找零=200-消费金额 思路4:计算消费所获得的积分 积分=消费总额/10

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网