Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java GUI 设计  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 关于模拟画图的
cainiao025





发贴: 20
积分: 0
于 2006-08-18 00:20 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我要通过点击单选钮来改变所画的图形,如选中直线则鼠标响应画出直线,选中圆则鼠标画出圆。
小弟我做了一个但是选中单选钮时,却不能得到正常的结果。我不知道在鼠标事件中怎样去处理单选钮,也就是说在鼠标事件中怎么样才能知道选中哪个单选钮。
还请大家帮忙指点一二。小弟不胜感激。
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class AppletExa11 extends Applet
{
  CheckboxGroup cg;
  Checkbox line,rect,cir;
  userCanvas mycanvas;
  public void init()
  {
    cg=new CheckboxGroup();
    line=new Checkbox("画线",true,cg);
    rect=new Checkbox("画矩形",false,cg);
    cir=new Checkbox("画圆",false,cg);
    
    add(line);
    add(rect);
    add(cir);
    mycanvas=new userCanvas(new Dimension(200,180),this);
    mycanvas.setBackground(Color.pink);
   add(mycanvas);
   mycanvas.requestFocus();
    
  }
}
class userCanvas extends Canvas
{
  AppletExa11 ae=new AppletExa11();
  Applet mParent;
  boolean isLine=false;
  boolean isRect,isCir;
  
  int startX=0,startY=0,currentX=0,currentY=0;
  int w,h;
  
  public userCanvas(Dimension d,Applet p)
  {
    mParent=p;
    setSize(d);
    addMouseMotionListener(new userMouseMotion(this));
    addMouseListener(new userMouse(this));
    
  }
  public void setMeg(String s)
  {
    mParent.showStatus(s);
  }
  public void setIsLine(boolean b)
  {
    
     isLine=b;
    
    
    
  }
  public void setIsRect(boolean b)
  {
    isRect=b;
  }
  public void setIsCir(boolean b)
  {
    isCir=b;
  }
  public void setStart(int x,int y)
  {
    startX=x;
    startY=y;
  }
  public void setCurrent(int x,int y)
  {
    currentX=x;
    currentY=y;
  }
  public void setWH(int w,int h)
  {
    this.w=w;
    this.h=h;
  }
  public void paint(Graphics g)
  {
    g.drawString("("+currentX+","+currentY+")",10,10);
    if(isLine)
    {
      g.drawLine(startX,startY,currentX,currentY);
      
    }
    else if(isRect)
    {
      g.drawRect(startX,startY,w,h);
    }
    else if(isCir)
    {
      g.drawOval(startX,startY,w,h);
    }
  }
}
class userMouseMotion extends MouseMotionAdapter
{
  
  AppletExa11 ae=new AppletExa11();
  userCanvas myobj;
  userMouseMotion(userCanvas p)
  {
    myobj=p;
    
  }
  public void mouseMoved(MouseEvent e)
  {
    myobj.setCurrent(e.getX(),e.getY());
    myobj.setIsLine(false);
    myobj.repaint(10,0,60,30);
  }
  public void mouseDragged(MouseEvent e)
  {
    //下面这句if语句不知道怎么写,不知道要怎样告知程序当前选中了哪个单选钮。    
    //if((ae.cg.getSelectedCheckbox()).getLabel()=="画线")
    //用鼠标画直线
      /*myobj.setCurrent(e.getX(),e.getY());
      myobj.setIsLine(true);
      myobj.repaint();
      myobj.setMeg("dragged mouse.");
      */
    
    
    //用鼠标画矩形
/*
      myobj.setWH((e.getX()-myobj.startX),(e.getY()-myobj.startY));
      myobj.setIsRect(true);
      myobj.repaint();
    
     */
//用鼠标画圆
/*
      myobj.setWH((e.getX()-myobj.startX),(e.getX()-myobj.startX));
      myobj.setIsCir(true);
      myobj.repaint();
     */
    
  }
  
}
class userMouse extends MouseAdapter
{
  userCanvas myobj;
    userMouse(userCanvas p)
  {
    myobj=p;
  }
  public void mousePressed(MouseEvent e)
  {
    myobj.setStart(e.getX(),e.getY());
    myobj.setMeg("pressed mouse."+"("+e.getX()+","+e.getY()+")");
  }
}




如何用JTable设置表头多行

话题树型展开
人气 标题 作者 字数 发贴时间
6139 关于模拟画图的 cainiao025 3137 2006-08-18 00:20
5087 Re:关于模拟画图的 cxp108 957 2006-08-18 10:59

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923