java repaint 速度,java repaint()
java repaint()求助
我想要实现在鼠标点击的位置绘制一个方块,绘制新的方块的同时保留已经绘制的方块,可是现在绘制新图形的时候,原有图形被覆盖,求大神帮忙import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
public class Test extends JFrame implements MouseListener {
int x;
int y;
int flag;
public static void main(String[] args){
Test test= new Test();
test.setVisible(true);
}
public Test() {
setSize(300,200);
DrawPanel drawtable= new DrawPanel();
drawtable.addMouseListener(this);
setContentPane(drawtable);
}
public class DrawPanel extends JPanel{
public void paint(Graphics g){
Graphics2D g2= (Graphics2D) g;
if(flag==1){
draw1(g2,x,y);
System.out.println(x);
System.out.println(y);
}
}
public void draw1(Graphics2D g2,int x,int y){
g2.setColor(Color.BLACK);
g2.fillRect(x, y, 10,10);
}
}
@Override
public void mouseClicked(MouseEvent e) {
x=e.getX();
y=e.getY();
flag=1;
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
------解决思路----------------------
你需要用一个成员变量记忆你以前的操作,我大概改了一下,能实现你的想法,给你做个参考。
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JFrame implements MouseListener {
int x;
int y;
int flag;
//这个对象提成成员变量,是为了方便操作它
private DrawPanel drawtable;
public static void main(String[] args) {
Test test = new Test();
test.setVisible(true);
}
public Test() {
setSize(300, 200);
drawtable = new DrawPanel();
drawtable.addMouseListener(this);
setContentPane(drawtable);
}
public class DrawPanel extends JPanel {
//新增成员,用于保存每次操作所点的位置
private ArrayList points;
// 新建了一构造方法,初始化点列表
public DrawPanel() {
points = new ArrayList();
}
//新增方法,用于向点列表增加一个点
public void addPoint(Point p) {
points.add(p);
//点变化了,申请重绘
repaint();
}
//这个方法做了点儿修改
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLACK);
//遍历点列表,重绘界面
Point p;
for (int i = 0; i
p = points.get(i);
g2.fillRect((int) p.getX(), (int) p.getY(), 10, 10);
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
//这里不再直接操作drawtable,而是让DrawPanl对象增加一个点
drawtable.addPoint(new Point(x, y));
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
------解决思路----------------------
我记得论坛有个一模一样的帖子,你找找。
java repaint 速度,java repaint()相关推荐
- java 反射 速度_Java反射,但速度更快
java 反射 速度 在编译时不知道Java类的最快方法是什么? Java框架通常会这样做. 很多. 它可以直接影响其性能. 因此,让我们对不同的方法进行基准测试,例如反射,方法句柄和代码生成. 用例 ...
- java c 速度_Java和C#运行速度对比:Java比C#快约3倍
测试条件: Java版本: Java 8, .NET版本:v4.0, Release模式,针对x86平台优化 单线程模式. Java代码: package javatest; public class ...
- 交通工具速度Java
为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A.B.C的表达式.现有两种工具:Car 007 和Plane,其中Car 007 的速 ...
- java js 速度慢,java js 速度慢jQuery常用知识点总结以及平时封装常用函数
本文为大家介绍了jQuery中常用知识点及函数,包含许多细节方面的知识,下面我们一起学习一下. jQuery中为我们提供了很多有用的属性,自己总结的一些常用的函数.个人认为在在线排盘开发中会比较常用的 ...
- 12306给自家技术团队打90分;Oracle 加快 Java 迭代速度
(点击上方蓝字,快速关注我们) 转自:开源中国.solidot.cnBeta.腾讯科技等 0.最高峰抢票时段平稳度过,12306 技术团队为自己打 90 分以上 据中国之声<全国新闻联播> ...
- java hashmap 速度慢_HashMap遍历速度最快的解决方案
[java]代码库java Map 遍历速度最优解 第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); w ...
- 现代Java开发速度很快
Øriginally posted on return.co.de Java开发快速而有趣. 信不信由你. 我在播客中听到了很多有关Java的抨击,大多数是从未进行过专业Java开发的开发人员,他们将 ...
- java获取磁盘读取速度_记录屏幕Java磁盘速度
您可能要考虑的一种选择是对多个线程进行处理.一个线程可以专用于截屏,而其他许多线程可以写入磁盘.由于写入磁盘不是占用大量CPU的操作,因此您可以让它们中的许多并发运行,每个写入一个不同的文件.以下程序 ...
- java毕业设计——基于java+图像处理技术的医学图像处理系统设计与实现(毕业论文+程序源码)——医学图像处理系统
基于java+图像处理技术的医学图像处理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+图像处理技术的医学图像处理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...
最新文章
- 使用 vue filters过滤器直接显示 几分钟前 几小时前 几天前
- c/s开发基础自学纪录为主
- php mysql 时间字段_php – MySQL中各种日期/时间字段类型的优...
- Kubernetes 集群升级指南:从理论到实践
- python语言流程控制语句的格式_第四节 Python控制语句
- css3的新特性transform,transition,animation
- [leetcode]102.二叉树的层序遍历
- 编写程序处理一个 string 类型的 list 容器。在该容器9.27:中寻找一个特殊值,如果找到,则将它删除掉。用 deque容器重写上述程序。
- php基础 简书,PHP入门基础
- JavaScript 简介
- 收藏的一个关于C# ToString的方法集合
- android 关闭jack_安卓编译 Jack server 错误问题解决办法
- Visual Studio 2010下载 + 附破解方法
- Julia中的数据分析入门
- 红外数据集 | 收集OTCBVS、KAIST、FLIR红外图像数据
- 伟大的程序员同志们累了看看我这笑话,巨搞笑!
- 使用expdp和impdp导出导入本地oracle数据.dmp文件
- 关于DefaultHttpClient的作用已经被弃之后的新方法
- 「项目进度管理」如何编制有效的进度计划?
- 怎么把图片压缩到200K以内?如何在线压缩图片大小?