contenPane小问题

qojnbbqtg 2010-03-21 02:21:00
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class MouseMotionEventDemo1 extends JFrame implements MouseListener,MouseMotionListener{
private static final long serialVersionUID = 1L;

int flag;//flag=1代表MouseMoved,flag=2代表MouseDragged
int x = 0;
int y = 0;
int startx,starty,endx,endy;//起始坐標與綹坐標

public MouseMotionEventDemo1(){
Container contentPane = getContentPane();
contentPane.addMouseListener(this);
contentPane.addMouseMotionListener(this);
//setSize(300,300);
setVisible(true);
contentPane.setBackground(Color.white);
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
//由mousePressed(),mouseReleased()取得拖曳的開始與結束坐標
public void mousePressed(MouseEvent e){
startx = e.getX();
starty = e.getY();
}
public void mouseReleased(MouseEvent e){
endx = e.getX();
endy = e.getY();
}
public void mouseEntered(MouseEvent e){

}
public void mouseExited(MouseEvent e){

}
public void mouseClicked(MouseEvent e){

}
//mouseMoved(),mouseDragged()取得鼠標移動的每一個坐標,應調用repaint()方法
public void mouseMoved(MouseEvent e){
flag = 1;
x = e.getX();
y = e.getY();
repaint();
}
public void mouseDragged(MouseEvent e){
flag = 2;
x = e.getX();
y = e.getY();
repaint();
}
public void update(Graphics g){
//g.setColor(this.getBackground());
//g.setColor(Color.white);
//g.fillRect(0, 0, getWidth(), getHeight());
//g.setColor(Color.red);
paint(g);
}
public void paint(Graphics g){
g.setColor(Color.red);
if(flag==1){
g.drawString("鼠標坐標:("+ x+","+y+")",10,50);
g.drawLine(startx,starty,endx,endy);
}
if(flag==2){
g.drawString("拖曳鼠標坐標:("+x+","+y+")" ,10, 50);
g.drawLine(startx, starty, endx, endy);
}
}

public static void main(String[] args){
new MouseMotionEventDemo1();
}
}


大家运行下看看是什么现象?为什么在我的机子上会出现contenePane是透明的,而且“拖曳鼠標坐標:("+x+","+y+")"”这些字都很模糊,,是我的机子卡的缘故吗?大家运行一下吧。。看看有没有出现我这种现象?
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qojnbbqtg 2010-03-21
  • 打赏
  • 举报
回复
哦 谢了 我待会试下。。。
afunx 2010-03-21
  • 打赏
  • 举报
回复
哦。那你可以用下BufferedImage缓冲类。
把图形先画在缓冲上,在又缓冲画到画板上。而画板每次画之前都更新一下。
qojnbbqtg 2010-03-21
  • 打赏
  • 举报
回复
谢谢 。。不过这样的话每次只能画一笔,有没有办法能每次画多笔啊。。。
afunx 2010-03-21
  • 打赏
  • 举报
回复
public void paint(Graphics g){
//public Graphics2D createGraphics(){

// }
g.setColor(Color.white);//**改变之处**
g.fillRect(0, 0,getWidth(),getHeight());//**改变之处**
g.setColor(Color.red);
if(flag==1){
g.drawString("鼠标坐标:(" + x + "," + y + ")",10,50);
g.drawLine(startx,starty,endx,endy);
}
if(flag==2){
g.drawString("拖曳鼠标坐标:("+x+","+y+")" ,10, 50);
g.drawLine(startx, starty, endx, endy);
}
}
每次重绘时,要先把画板擦干净。
afunx 2010-03-21
  • 打赏
  • 举报
回复
我找到原因了,好像是因为屏幕没有及时更新,和以前的字叠加造成的重影。正在试着解决。
内容概要:本文档是一份针对初学者的Spring框架整合学习笔记,系统介绍了Spring Framework的核心基础与Spring MVC的开发应用。内容涵盖IOC(控制反转)的基本概念、配置方式与注解使用,详细讲解了bean的生命周期、作用域、依赖注入方式及自动装配机制;深入阐述AOP(面向切面编程)的XML与注解实现,包括切点、通知、织入等核心概念;全面演示Spring MVC的环境搭建、请求处理、参数绑定、视图解析、文件上传、RESTful风格支持、JSON返回、异常处理与拦截器开发;同时包含表单验证、国际化、与Struts2对比以及Spring IOC与MVC整合等实用知识点。; 适合人群:具备Java基础和基本Web开发经验,正在学习或刚进入企业级Java开发领域的初级程序员、应届毕业生及转行人员。; 使用场景及目标:①掌握Spring核心机制如IOC、AOP的原理与实际配置;②能够独立搭建Spring MVC项目并实现常见Web功能如参数接收、响应处理、文件上传、异常统一管理等;③理解Spring生态中各注解的作用与最佳实践,为后续学习Spring Boot和微服务打下坚实基础。; 阅读建议:此资源以理论结合实操为主,建议边阅读边动手搭建项目,重点理解配置背后的运行机制,尤其是bean生命周期、AOP织入过程和MVC请求流程,配合调试加深理解。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧