当前位置:  技术问答>java相关

课程设计,马上要交了,我还没搞定,HELP !!!! (星期一发帖,明天晚结贴)急急急急急急急急急急急!!!

    来源: 互联网  发布时间:2015-07-10

    本文导语:  我的课程设计是设计一个画图程序,目前主要问题是对关于重画的问题搞不清: (1)当鼠标按下一键后拖动鼠标,画出一线,随着拖动,我要擦去先前的线,但是 如果这一线画在已经画好的线上,在擦去先前的线时...

我的课程设计是设计一个画图程序,目前主要问题是对关于重画的问题搞不清:
(1)当鼠标按下一键后拖动鼠标,画出一线,随着拖动,我要擦去先前的线,但是
如果这一线画在已经画好的线上,在擦去先前的线时会把相交点的像素同时擦掉,
同学说要记下先前所画的线,再重画。如何记下先前所画的线,请高手指点。
(2)还有重画问题,我的同学重载了paint()函数,但是《Java2 核心技术》第一卷中说在Swing中不可再用paint()来绘画,说如果改写了paint()函数,将会与JComponent.paint方法冲突,程序将不可正常运行,那我该怎么办。
(3)我搞不懂我的同学为什么要重载paint()函数,他说rpaint()函数会自动调用
paint()函数,那我直接调用rpaint()函数不就可以了么,关于这个问题希望详细点
既rpaint(),paint()还有一个update()的各个方法的用处,联系,及使用的地方都能解释一下
(4)当我的程序被其他窗口覆盖后,再现时,我所画的图形会被抹去,我该如何解决这个问题??

|
原代码帮你写了,够意思了吧
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class DrawLinePanel
{
public static void main(String[] args)
{
JFrame frame=new JFrame("--DrawLinePanel--");
Container con=frame.getContentPane();
MyPanel mp=new MyPanel();
MyMouseListener listener1=new MyMouseListener(mp);
MyMouseListener2 listener2=new MyMouseListener2(mp);
mp.addMouseListener(listener1);
mp.addMouseMotionListener(listener2);
con.add(mp,BorderLayout.CENTER);
frame.setBounds(30,30,300,300);
frame.show();
}
}
class MyPanel extends JPanel
{
Vector v=new Vector();
MyPoint point=new MyPoint();
boolean flag=false;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Enumeration enum=v.elements();
while(enum.hasMoreElements())
{
Object obj=enum.nextElement();
MyPoint p=(MyPoint)obj;
g.drawLine(p.sX,p.sY,p.eX,p.eY);
}
if(flag)
{
g.drawLine(point.sX,point.sY,point.eX,point.eY);
}
}
}
class MyMouseListener extends MouseAdapter
{
    MyPanel dlp;
    public MyMouseListener(MyPanel d)
    {
this.dlp=d;
    }
    public void mousePressed(MouseEvent e)
    {
dlp.point.sX=e.getX();
dlp.point.sY=e.getY();
    }
    public void mouseReleased(MouseEvent e)
    {
if(dlp.flag)
{
dlp.v.add(new MyPoint(dlp.point.sX,dlp.point.sY,e.getX(),e.getY()));
dlp.flag=false;
dlp.point.reset();
dlp.repaint();
}
    }
}
class MyMouseListener2 extends MouseMotionAdapter
{
MyPanel dlp=null;
public MyMouseListener2(MyPanel d)
{
this.dlp=d;
}
public void mouseDragged(MouseEvent e)
{
dlp.flag=true;
dlp.point.eX=e.getX();
dlp.point.eY=e.getY();
dlp.repaint();
}
}
class MyPoint
{
int sX=0;
int sY=0;
int eX=0;
int eY=0;
public MyPoint()
{
}
public MyPoint(int x,int y,int m,int n)
{
sX=x;sY=y;eX=m;eY=n;
}
void reset()
{
sX=0;
sY=0;
eX=0;
eY=0;
}
}

|
为了防止以前画的被清空
public void update(Graphics g)
{
   paint(g);
}

|
public void update(Graphics g)
{
   paint(g);
}
应该可以解决你的4 个问题.你该好好看看java 2 图形设计 卷1 AWT,
就在开头部分

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • FET课程表调度
  • 远程教学与课程管理系统 LogiCampus
  • .net/c#/asp.net iis7站长之家
  • 课程管理系统 Moodle
  • 课程内容管理系统 Segue
  • 对日软件工程师课程热招中
  • 请问哪里有SCJP的的中文教程275课程,我要同英文对照起来看,英文太难了
  • sniffer pro 教程哪找,是不是学SCPP认证课程才能有?SCPP认证教程是中文的吗?
  • 这学期,我们有数据库的课程设计,写一个软件,用Java来作容易吗?
  • 求<<微型计算机接口技术>>课程设计报告一个+100 分
  • 课程设计,大家救救我啊!
  • 半价共享 RHCE(红帽认证工程师课程) 遠程学习课件[033,133]
  • 半价分享 RHCE(红帽认证工程师课程) 学习课件[033,133]
  • 这是我们专业下学期的课程表,前辈进来看看建议建议!
  • 请大家帮忙!Sun Java认证具体情况:费用,资料,课程设置等
  • IBM AIX学院重量级课程登场!
  • 向在校大学生求助!(《操作系统》的课程设计)(给高分!)
  • 课程设计,求一本书
  • 看了一下SL275(2001年5月)的课程概述,发现里面没有了Applet了,SCJP是不是舍弃了它了?
  • 求高手解决国嵌视频中课程1-Linux系统管理,NFS网络配置问题?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3