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

300分的问题?帮我查一下问题出在哪里,高分重谢!!

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

    本文导语:  /**  * 重新绘制panel  * @param g  */ public void paintComponent(Graphics g)    {  int x,y;       super.paintComponent(g);       currentGraphics=g;       Dimension d = getSize();       int clientWidth = d.width;       int clientHe...

/**
 * 重新绘制panel
 * @param g
 */
public void paintComponent(Graphics g)
   {  int x,y;
      super.paintComponent(g);
      currentGraphics=g;
      Dimension d = getSize();
      int clientWidth = d.width;
      int clientHeight = d.height;
   if (image!=null)
    {
      int imageWidth = image.getWidth(this);
      int imageHeight = image.getHeight(this);
      if (clientWidth > imageWidth){
         if (clientHeight>imageHeight){
          x=(clientWidth-imageWidth)/2;
          y=(clientHeight-imageHeight)/2;}
         else
          {x=0;y=0;}
        }
      else
        {x=0;y=0;}
    g.drawImage(image,x, y, this);
    }
    }
public void drawLines(Component c1,Component c2)
   {
     Graphics g = this.getGraphics();
     paintComponent(g);
     int c1x=c1.getX()+c1.getWidth()/2;
     int c1y=c1.getY()+c1.getHeight()/2;
     int c2x=c2.getX()+c2.getWidth()/2;
     int c2y=c2.getY()+c2.getHeight()/2;
     g.setColor(Color.red);
     g.drawLine(c1x,c1y,c2x,c2y);]
     repaint();
    }

运行没有出错,但是在调用drawLines的时候,在两个控件间画的线只是闪了一下就不见了

各位老大可以帮我找出原因吗?如何把画出来的线同原来的画面合并在一起??

|
还没有行吗?写了个小程序,不知道算不算你说的‘随便画线’,希望有所帮助
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;
}
}

|
paintComponent()会调用panel的UI代表重绘整个panel,所以以前画的线都会消失,fightboy()说得应该没错。
当然,照xioyoo()的程序中用Vector数组来保存所画的线,以便重绘是使用也是一种方法,选用哪种方法就要看你的程序的目的是什么了。

|
把g作为参数传到drawLines里去。在paintComponent(Graphics g)里调用,而不是在drawLines里调用paintComponent,paintComponent是自动调用的。

    
 
 

您可能感兴趣的文章:

  • 紧急问题,重谢!
  • 谁帮我解决SCO UNIX5.05安装问题,500分重谢,高手进来看看吧!
  • 为什么在安装oracle9i在最后建立数据库时出现以下问题(解决立即给分,重谢)
  • 请问一些jsp的常识问题!望大侠们不惜指教!!重谢!
  • 帮我查一下问题出在哪里,高分重谢!!
  • jbuilder6。0的开发环境常识问题,望各位大侠不惜指教!重谢!
  • 请教在哪里可以学习IBM AS/400,怎样学习较好?各位帮帮忙,这是一个关系到小弟前程的问题!重谢!!!
  • 请问关于jsp,asp的4个问题?重谢!
  • 还是关于linux共享库版本化的问题,有重谢
  • 运行提示:“断错误”,请高手帮我看看,解决问题者100分重谢!
  • linux下的vi中的乱码问题(急急急,在线等待!!!!!!,解决问题给高分)
  • 高分哦,不是问题的问题
  • 高分咨询问题!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 一个简单的问题,高分求助!!!
  • Linux远程访问的问题,高分求教:)
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题 iis7站长之家
  • sun solaris中存在的telnet问题?急!急!急!急!请高手指点,高分相赠!
  • 高分求助网卡问题,只要意见合理,即使解决不了问题,同样散分
  • 高分求解 - TOMCAT中的内存泄漏问题……
  • 高分请教:vi的移植问题
  • 高分求救!!!(200)我回多问相同问题来给分的,急急急
  • 高分请教一简单问题
  • 特急!高分!loadlin的问题
  • 高分请教,n简单的问题急急!!!
  • 调试JSP遇到的问题,高分求解
  • 高分向送,简单问题
  • 高分问linux串口和windows通信问题
  • (高分求教)linux redhat9.0 安装问题
  • apache虚拟主机的配置问题,急,高分
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 简单问题简单问题简单问题简单问题
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 小问题,急问题,重大问题!!!
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • 八个问题帮你快速了解Docker
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路
  • nginx Windows版相关问题及使用说明
  • 死锁的问题 多级锁定问题 循环锁定问题
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • [问题]双系统出现的问题!求问题的原因和解决办法!
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 初学者问题。一个是编译hello world的问题,一个是配置ssh的问题
  • c/c++服务器程序内存泄露问题分析及解决
  • C程序问题:哪个高手帮我解释下下面的问题,主要是a[0]和&[0] 的区别 和编译器的问题??
  • ​部署 Docker 前必须问自己的四个问题
  • swing的问题还是jbuiler的问题??
  • spring的事务类型及spring和hibernate可能导致的问题分析
  • 菜鸟第一次安装红帽子7.2的一箩筐问题。每个问题会开个帖子,各放100分!请有安装经验的老鸟们帮忙解决。第二个问题:什么是LILO?怎么样


  • 站内导航:


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

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

    浙ICP备11055608号-3