CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

七段数码类??

楼主tondayong1981(bryan)2004-12-02 21:32:21 在 Java / J2SE / 基础类 提问

希望大家能帮我写一个七段数码类,比如12345用数码显示的,在面板上,当面板拖大时,数码数字也跟着大。面板放在frame中。    
  我自己写了,但不知怎么随着面板放大而放大??  
   
  问题点数:20、回复次数:21Top

1 楼LoveJ2ee_Frisk(小月又欠)回复于 2004-12-02 22:20:15 得分 0

可以把你的代码贴出来看看吗?  
  不太明白你的意思。Top

2 楼tondayong1981(bryan)回复于 2004-12-03 17:48:59 得分 0

我写了一个类,画七段数码的,但是不知怎样调用,而且关键我的坐标不会处理,因为老师要求,把计算器放大,显示数码的面板也跟着放大。我头都大了,就是不会啊,我实在不知怎么处理坐标,所以把头一个坐标设为(50,50)。  
  class   SevenDigitalDemo    
  {  
                  public     int   x=50;  
                  public     int   y=50;  
                  public   void   UpDemoPainting(Graphics   g)//UpDemoPainting  
  {  
  Polygon   p1=new   Polygon();  
  p1.addPoint(x,y);  
  p1.addPoint(x+20,y+20);  
  p1.addPoint(x+80,y+20);  
  p1.addPoint(x+100,y);  
  g.drawPolygon(p1);  
  g.setColor(Color.red);  
  g.fillPolygon(p1);  
   
  }  
   
  public   void   RightDemoPainting(Graphics   g)//RightDemoPainting  
  {  
  Polygon   p2=new   Polygon();  
  p2.addPoint(x+83,y+23);  
  p2.addPoint(x+83,y+83);  
  p2.addPoint(x+96,y+96);  
  p2.addPoint(x+103,y+89);  
  p2.addPoint(x+103,y+3);  
  g.setColor(Color.red);  
  g.drawPolygon(p2);  
  g.fillPolygon(p2);  
  }  
  public   void   LeftDemoPainting(Graphics   g)//LeftDemoPainting  
  {  
  Polygon   p3=new   Polygon();  
  p3.addPoint(x-3,y+3);  
  p3.addPoint(x-3,y+89);  
  p3.addPoint(x+4,y+96);  
  p3.addPoint(x+17,y+83);  
  p3.addPoint(x+17,y+23);  
  g.setColor(Color.red);  
  g.drawPolygon(p3);  
  g.fillPolygon(p3);  
  }  
   
   
  public   void     MidDemoPainting(Graphics   g)//MidDemoPainting  
  {  
  Polygon   p4=new   Polygon();  
  p4.addPoint(x+20,y+86);  
  p4.addPoint(x+80,y+86);  
  p4.addPoint(x+92,y+98);  
  p4.addPoint(x+80,y+106);  
  p4.addPoint(x+20,y+106);  
  p4.addPoint(x+8,y+98);  
  g.drawPolygon(p4);  
  g.fillPolygon(p4);  
  }  
   
  public     void   LeftdownDemoPainting(Graphics   g)//LeftdownDemoPainting  
  {  
  Polygon   p5=new   Polygon();  
  p5.addPoint(x+4,y+100);  
  p5.addPoint(x+17,y+109);  
  p5.addPoint(x+17,y+169);  
  p5.addPoint(x-3,y+189);  
  p5.addPoint(x-3,y+107);  
  g.drawPolygon(p5);  
  g.fillPolygon(p5);  
  }  
   
  public   void   RightdownDemoPainting(Graphics   g)//RightdownDemoPainting  
  {  
  Polygon   p6=new   Polygon();  
  p6.addPoint(x+96,y+100);  
  p6.addPoint(x+103,y+107);  
  p6.addPoint(x+103,y+189);      
  p6.addPoint(x+83,y+169);  
  p6.addPoint(x+83,y+109);  
  g.drawPolygon(p6);  
  g.fillPolygon(p6);  
  }  
   
  public   void   DownDemoPainting(Graphics   g)//DownDemoPainting  
  {  
  Polygon   p7=new   Polygon();  
  p7.addPoint(x+20,y+172);  
  p7.addPoint(x+80,y+172);  
  p7.addPoint(x+100,y+192);  
  p7.addPoint(x,y+192);  
  g.drawPolygon(p7);  
  g.fillPolygon(p7);  
  }  
  }  
   
   
  老师的意思是七段数码一定要画出来,按下1的时候,就显示七段数码中的1  
  ,按下2,就显示2。  
  --------  
  |                 |  
  |                 |  
  |                 |  
  |--------|  
  |                 |  
  |                 |  
  |                 |  
  |                 |  
  ----------  
  即不同时间显示8的不同部位而已/  
   
  Top

3 楼superman421(38度的雪)回复于 2004-12-03 18:37:23 得分 0

有空了就帮你写Top

4 楼tondayong1981(bryan)回复于 2004-12-03 20:37:10 得分 0

是不是大概这样写,不过还是没放大,你帮我写一段数码看看行吗.不然我可能有要走很多弯路,而且还可能白画??谢谢了,比如画画最上面的那一段,我是则样想的,刚开始让窗口的width=300,height=350来画图,然后拖动窗口,width,height也会跟着变,就可以了.拜托了,我快要交了.  
  import   java.awt.*;  
  import   javax.swing.*;  
   
  class   Drawpolyline   extends   Frame  
  {  
  public   Drawpolyline()  
  {  
  super("drawpolyline");  
  //setSize(300,350);  
   
  pack();  
  show();  
  }  
  public   void   paint(Graphics   g)  
  {  
   
  Polygon   p1=new   Polygon();  
  p1.addPoint(width/10,height/7);  
  p1.addPoint(width/10+20,height/7+20);  
  p1.addPoint(width/10+80,height/7+20);//上  
  p1.addPoint(width/10+100,height/7);  
  g.drawPolygon(p1);  
  g.setColor(Color.red);  
  g.fillPolygon(p1);  
   
  }  
  public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
   
  super.setBounds(x,y,width,height);  
  repaint();  
   
  }  
   
  public   Dimension   getMinimumSize()  
  {  
  return   new   Dimension(width,height);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(width,height);  
  }  
  private   int   width=300,height=350;  
   
   
   
  public   static   void   main(String[]   args)  
  {  
  new   Drawpolyline();  
  }  
  }Top

5 楼tondayong1981(bryan)回复于 2004-12-03 20:50:53 得分 0

看了这个程序,我还是照搬不上,因为c.add(new   Star2(),BorderLayout.CENTER);star是画在frame中的,而我要画在panel上,我试了一下啊.我用extends     JComponent然后用paintComponent(Graphics   g),不行.但是不能放大啊??  
   
  import   java.awt.*;  
  import   javax.swing.*;  
   
  class   Star2   extends   JComponent  
  {  
  public   void   paint(Graphics   g)  
  {  
  double   x1,x2,y1,y2;  
  for(double   angle=0;angle<Math.PI;angle=angle+Math.PI/16)  
  {  
  x1=Math.cos(angle)*radius+radius;  
  y1=Math.sin(angle)*radius+radius;  
  x2=Math.cos(angle+Math.PI)*radius+radius;  
  y2=Math.sin(angle+Math.PI)*radius+radius;  
  g.drawLine((int)x1,(int)y1,(int)x2,(int)y2);  
  }  
  }  
   
  public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
  radius=Math.min(width,height)/2;  
  super.setBounds(x,y,width,height);  
  repaint();  
   
  }  
   
  public   Dimension   getMinimumSize()  
  {  
  return   new   Dimension(2*radius,2*radius);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(2*radius,2*radius);  
  }  
  private   int   radius=100;  
  }  
   
  public   class   Nesting  
   
  {  
  public   static   void   main(String[]   args)  
  {  
  JFrame   frame=new   JFrame("Nesting   containers");  
  Container   c=frame.getContentPane();  
  JPanel   panel=new   JPanel();  
  panel.setLayout(new   GridLayout(4,1));  
  panel.add(new   JButton("One"));  
  panel.add(new   JButton("Two"));  
  panel.add(new   JButton("Three"));  
  panel.add(new   JButton("Four"));  
  c.add(panel,BorderLayout.WEST);  
  c.add(new   Star2(),BorderLayout.CENTER);  
  frame.pack();  
  frame.show();  
  }  
   
  }Top

6 楼shangqiao(伤桥(千万不要理解为我可怜桥,是“伤心桥下”的缩写))回复于 2004-12-04 08:41:47 得分 5

我有一个笨办法呵呵,不用画图,把一个显示管分为上下两部分,分别使用BorderLayout,不是由7根显示条显示,那么使用7个Label分别放在NORTH,SOURCH,WEST,EAST代替不就可以了,要显示的地方改变颜色即可,放大那么就更简单了,layout已经实现了嘛,呵呵,不错吧  
  Top

7 楼shangqiao(伤桥(千万不要理解为我可怜桥,是“伤心桥下”的缩写))回复于 2004-12-04 08:52:09 得分 0

当然是要先写一个类封装上面的这些操作,继承于Panle,那么计算结果有多少位,生成多少个类添加到显示区域的Panel里面即可以了Top

8 楼superman421(38度的雪)回复于 2004-12-04 23:04:35 得分 0

我刚刚试了,可以放大呀!怎么不能放大?Top

9 楼tondayong1981(bryan)回复于 2004-12-05 11:06:58 得分 0

回复人:   superman421(38度的雪)   (   )   信誉:100    
  昨天我发给你的,还是有点不对.你运行一下就知道那儿不对了.上面的事例程序有public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
  radius=Math.min(width,height)/2;  
  super.setBounds(x,y,width,height);  
  repaint();  
   
  }  
   
  public   Dimension   getMinimumSize()  
  {  
  return   new   Dimension(2*radius,2*radius);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(2*radius,2*radius);  
  }  
   
  而下面我写的好象没什么用.为什么??今天我要把这一段代码添加到我的计算器中了.  
   
  import   java.awt.*;  
  import   javax.swing.*;  
   
  class   Drawpolyline   extends   Frame  
  {  
  public   Drawpolyline()  
  {  
  super("drawpolyline");  
  //setSize(300,350);  
   
  pack();  
  show();  
  }  
   
  public   void   paint(Graphics   g)  
  {  
   
   
                  Dimension   tsize=getSize();  
   
                  g.setColor(getBackground());  
                  g.fillRect(0,   0,   tsize.width,   tsize.height);  
                  g.setColor(getForeground());  
                  width=tsize.width*3/8;  
                  height=tsize.height;    
  ;  
   
  x[0]=a;  
  y[0]=b+5*height/232;  
  x[1]=x[0]+26*width/139;  
  y[1]=y[0]+26*height/232;  
  x[2]=x[1];  
          y[2]=y[1]+67*height/232;  
  x[3]=x[2]-15*width/139;  
          y[3]=y[2]+15*height/232;  
  x[4]=a;  
  y[4]=y[0]+96*height/232;  
  Polygon   p1=new   Polygon(x,y,5);  
  g.drawPolygon(p1);  
  g.setColor(Color.red);  
  g.fillPolygon(p1);  
   
   
          x1[0]=x[0]+5*width/139;  
  y1[0]=y[0]-5*height/232;  
  x1[1]=x1[0]+127*width/139;  
  y1[1]=y1[0];  
  x1[2]=x1[1]-26*width/139;  
  y1[2]=y1[1]+26*height/232;  
  x1[3]=x[0]+31*width/139;  
  y1[3]=y1[0]+26*height/232;  
  Polygon   p2=new   Polygon(x1,y1,4);  
  g.drawPolygon(p2);  
  g.setColor(Color.RED);  
  g.fillPolygon(p2);  
   
   
  x2[0]=x1[2]+5*width/139;  
  y2[0]=y1[2]+5*height/232;  
  x2[1]=x2[0]+26*width/139;  
  y2[1]=y2[0]-26*height/232;  
  x2[2]=x2[1];  
  y2[2]=y2[1]+96*height/232;  
  x2[3]=x2[2]-8*width/139;  
  y2[3]=y[2]+15*height/232;  
  x2[4]=x2[0];  
  y2[4]=y2[0]+67*height/232;  
  Polygon   p3=new   Polygon(x2,y2,5);  
  g.drawPolygon(p3);  
  g.setColor(Color.RED);  
  g.fillPolygon(p3);  
   
  x3[0]=x[1];  
  y3[0]=y[2]+8*height/232;  
  x3[1]=x3[0]+86*width/139;  
  y3[1]=y3[0];  
  x3[2]=x3[1]+12*width/139;  
  y3[2]=y3[1]+12*height/232;  
  x3[3]=x3[2]-12*width/139;  
  y3[3]=y3[2]+12*height/232;  
  x3[4]=x3[3]-86*width/139;  
  y3[4]=y3[3];  
  x3[5]=x3[4]-12*width/139;  
  y3[5]=y3[3]-12*height/232;  
  Polygon   p4=new   Polygon(x3,y3,6);  
  g.drawPolygon(p4);  
  g.setColor(Color.RED);  
  g.fillPolygon(p4);  
   
   
   
  x4[0]=x3[4];  
  y4[0]=y3[4]+8*height/232;  
  x4[1]=x3[4];  
  y4[1]=y4[0]+67*height/232;  
  x4[2]=x4[1]-26*width/139;  
  y4[2]=y4[1]+26*height/232;  
  x4[3]=x4[2];  
  y4[3]=y4[2]-96*height/232;  
          x4[4]=x4[3]+12*width/139;  
  y4[4]=y4[3]-11*height/232;  
  Polygon   p5=new   Polygon(x4,y4,5);  
  g.drawPolygon(p5);  
  g.setColor(Color.RED);  
  g.fillPolygon(p5);  
   
   
  x5[0]=x4[1]+5*width/139;;  
  y5[0]=y4[1]+5*height/232;  
  x5[1]=x5[0]+80*width/139;  
  y5[1]=y5[0];  
  x5[2]=x5[1]+26*width/139;  
  y5[2]=y5[1]+26*height/232;  
  x5[3]=x5[0]-26*width/139;  
  y5[3]=y5[0]+26*height/232;  
  Polygon   p6=new   Polygon(x5,y5,4);  
  g.drawPolygon(p6);  
  g.setColor(Color.RED);  
  g.fillPolygon(p6);  
   
   
  x6[0]=x2[3];  
  y6[0]=y2[3]+8*height/232;  
  x6[1]=x6[0]+10*width/139;  
  y6[1]=y6[0]+10*height/232;  
  x6[2]=x6[1];  
  y6[2]=y6[1]+96*height/232;  
  x6[3]=x6[2]-26*width/139;  
  y6[3]=y6[2]-26*height/232;  
          x6[4]=x6[3];  
  y6[4]=y3[4]+8*height/232;  
  Polygon   p7=new   Polygon(x6,y6,5);  
  g.drawPolygon(p7);  
  g.setColor(Color.RED);  
  g.fillPolygon(p7);  
   
   
   
   
   
  }  
  public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
   
  super.setBounds(x,y,width,height);  
  repaint();  
   
  }  
   
  public   Dimension   getMinimumSize()  
  {  
  return   new   Dimension(width,height);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(width,height);  
  }  
  private   int   width=70,height=117,a=100,b=50;  
  ;  
   
        int[]   x   =new   int[5];  
          int[]   y   =new   int[5];  
           
          int[]   x1   =new   int[4];  
          int[]   y1   =new   int[4];  
           
          int[]   x2=new   int[5];  
          int[]   y2   =new   int[5];  
           
          int[]   x3=new   int[6];  
          int[]   y3   =new   int[6];  
           
          int[]   x4=new   int[5];  
          int[]   y4=new   int[5];  
           
           
          int[]   x5   =new   int[4];  
          int[]   y5   =new   int[4];  
           
          int[]   x6   =new   int[5];  
          int[]   y6   =new   int[5];  
           
           
           
           
   
   
   
   
  public   static   void   main(String[]   args)  
  {  
  new   Drawpolyline();  
  }  
  }Top

10 楼superman421(38度的雪)回复于 2004-12-05 12:45:57 得分 15

为什么要直接在Frame里面画????????????  
  不好理解!!!!!!!!!!!!!!  
  改成下面的样子就没有问题了。  
  import   java.awt.*;  
  import   javax.swing.*;  
   
  class   Drawpolyline   extends   JComponent  
  {  
  public   void   paint(Graphics   g)  
  {              
                  g.setColor(getBackground());  
                  g.fillRect(0,   0,width,height);  
                  g.setColor(getForeground());  
   
  x[0]=a;  
  y[0]=b+5*height/232;  
  x[1]=x[0]+26*width/139;  
  y[1]=y[0]+26*height/232;  
  x[2]=x[1];  
          y[2]=y[1]+67*height/232;  
  x[3]=x[2]-15*width/139;  
          y[3]=y[2]+15*height/232;  
  x[4]=a;  
  y[4]=y[0]+96*height/232;  
  Polygon   p1=new   Polygon(x,y,5);  
  g.drawPolygon(p1);  
  g.setColor(Color.red);  
  g.fillPolygon(p1);  
   
   
          x1[0]=x[0]+5*width/139;  
  y1[0]=y[0]-5*height/232;  
  x1[1]=x1[0]+127*width/139;  
  y1[1]=y1[0];  
  x1[2]=x1[1]-26*width/139;  
  y1[2]=y1[1]+26*height/232;  
  x1[3]=x[0]+31*width/139;  
  y1[3]=y1[0]+26*height/232;  
  Polygon   p2=new   Polygon(x1,y1,4);  
  g.drawPolygon(p2);  
  g.setColor(Color.RED);  
  g.fillPolygon(p2);  
   
   
  x2[0]=x1[2]+5*width/139;  
  y2[0]=y1[2]+5*height/232;  
  x2[1]=x2[0]+26*width/139;  
  y2[1]=y2[0]-26*height/232;  
  x2[2]=x2[1];  
  y2[2]=y2[1]+96*height/232;  
  x2[3]=x2[2]-8*width/139;  
  y2[3]=y[2]+15*height/232;  
  x2[4]=x2[0];  
  y2[4]=y2[0]+67*height/232;  
  Polygon   p3=new   Polygon(x2,y2,5);  
  g.drawPolygon(p3);  
  g.setColor(Color.RED);  
  g.fillPolygon(p3);  
   
  x3[0]=x[1];  
  y3[0]=y[2]+8*height/232;  
  x3[1]=x3[0]+86*width/139;  
  y3[1]=y3[0];  
  x3[2]=x3[1]+12*width/139;  
  y3[2]=y3[1]+12*height/232;  
  x3[3]=x3[2]-12*width/139;  
  y3[3]=y3[2]+12*height/232;  
  x3[4]=x3[3]-86*width/139;  
  y3[4]=y3[3];  
  x3[5]=x3[4]-12*width/139;  
  y3[5]=y3[3]-12*height/232;  
  Polygon   p4=new   Polygon(x3,y3,6);  
  g.drawPolygon(p4);  
  g.setColor(Color.RED);  
  g.fillPolygon(p4);  
   
   
   
  x4[0]=x3[4];  
  y4[0]=y3[4]+8*height/232;  
  x4[1]=x3[4];  
  y4[1]=y4[0]+67*height/232;  
  x4[2]=x4[1]-26*width/139;  
  y4[2]=y4[1]+26*height/232;  
  x4[3]=x4[2];  
  y4[3]=y4[2]-96*height/232;  
          x4[4]=x4[3]+12*width/139;  
  y4[4]=y4[3]-11*height/232;  
  Polygon   p5=new   Polygon(x4,y4,5);  
  g.drawPolygon(p5);  
  g.setColor(Color.RED);  
  g.fillPolygon(p5);  
   
   
  x5[0]=x4[1]+5*width/139;;  
  y5[0]=y4[1]+5*height/232;  
  x5[1]=x5[0]+80*width/139;  
  y5[1]=y5[0];  
  x5[2]=x5[1]+26*width/139;  
  y5[2]=y5[1]+26*height/232;  
  x5[3]=x5[0]-26*width/139;  
  y5[3]=y5[0]+26*height/232;  
  Polygon   p6=new   Polygon(x5,y5,4);  
  g.drawPolygon(p6);  
  g.setColor(Color.RED);  
  g.fillPolygon(p6);  
   
   
  x6[0]=x2[3];  
  y6[0]=y2[3]+8*height/232;  
  x6[1]=x6[0]+10*width/139;  
  y6[1]=y6[0]+10*height/232;  
  x6[2]=x6[1];  
  y6[2]=y6[1]+96*height/232;  
  x6[3]=x6[2]-26*width/139;  
  y6[3]=y6[2]-26*height/232;  
          x6[4]=x6[3];  
  y6[4]=y3[4]+8*height/232;  
  Polygon   p7=new   Polygon(x6,y6,5);  
  g.drawPolygon(p7);  
  g.setColor(Color.RED);  
  g.fillPolygon(p7);  
   
  }  
   
  public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
  this.width=width;  
  this.height=height;  
  super.setBounds(x,y,width,height);  
  repaint();  
   
  }  
   
  public   Dimension   getMinimumSize()  
  {  
  return   new   Dimension(width,height);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(width,height);  
  }  
  private   int   width=200,height=150,a=0,b=0;  
  ;  
   
        int[]   x   =new   int[5];  
          int[]   y   =new   int[5];  
           
          int[]   x1   =new   int[4];  
          int[]   y1   =new   int[4];  
           
          int[]   x2=new   int[5];  
          int[]   y2   =new   int[5];  
           
          int[]   x3=new   int[6];  
          int[]   y3   =new   int[6];  
           
          int[]   x4=new   int[5];  
          int[]   y4=new   int[5];  
           
           
          int[]   x5   =new   int[4];  
          int[]   y5   =new   int[4];  
           
          int[]   x6   =new   int[5];  
          int[]   y6   =new   int[5];  
           
           
        public   static   void   main(String[]   args)  
  {  
  JFrame   f=new   JFrame("test");  
  f.getContentPane().add(new   Drawpolyline());  
  f.pack();  
  f.setVisible(true);  
  }  
  }  
  Top

11 楼tondayong1981(bryan)回复于 2004-12-05 15:56:29 得分 0

我也想画在panel上,不过看不到,你瞧瞧我下面的程序。  
  写事件时我想把诸如g.drawPolygon(p7);  
  g.setColor(Color.RED);  
  g.fillPolygon(p7);都注释掉,而在写事件的时候写,不如按下一的时候,就把最右边的两段着色。但是我不知为什么p不可见,当然我把SevenDigitalDemo当成内部类来用之后,当然还存在一个g问题,在public     void   actionPerformed(ActionEvent   e)好象不能用到g所以很难实行,你有什么好办法,建议以下。  
   
  import   java.awt.*;  
  import   java.awt.event.*;  
  import   javax.swing.*;  
  import   java.awt.color.*;  
  import   javax.swing.JOptionPane;  
   
   
  class   SevenDigitalDemo   extends   JPanel    
  { Polygon   p1,p2,p3,p4,p5,p6,p7;  
   
  public   SevenDigitalDemo()  
  {  
  enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);  
  }  
          public   void   paintComponent(Graphics   g)  
  {  
  super.paintComponent(g);  
   
                   
                  Dimension   tsize=getSize();  
   
                  g.setColor(getBackground());  
                  g.fillRect(0,   0,   tsize.width,   tsize.height);  
                  g.setColor(getForeground());  
                  width=tsize.width/3;  
                  height=tsize.height*5/6;  
                  a=tsize.width/40;  
                  b=tsize.height/10;  
                   
   
  x[0]=a;  
  y[0]=b+12;//+5*height/232;  
  x[1]=x[0]+26*width/139;  
  y[1]=y[0]+26*height/232;  
  x[2]=x[1];  
          y[2]=y[1]+67*height/232;  
  x[3]=x[2]-15*width/139;  
          y[3]=y[2]+15*height/232;  
  x[4]=a;  
  y[4]=y[0]+96*height/232;  
  Polygon   p1=new   Polygon(x,y,5);  
  g.drawPolygon(p1);  
  g.setColor(Color.red);  
  g.fillPolygon(p1);  
   
   
          x1[0]=x[0]+5*width/139;  
  y1[0]=y[0]-5*height/232;  
  x1[1]=x1[0]+127*width/139;  
  y1[1]=y1[0];  
  x1[2]=x1[1]-26*width/139;  
  y1[2]=y1[1]+26*height/232;  
  x1[3]=x[0]+31*width/139;  
  y1[3]=y1[0]+26*height/232;  
  Polygon   p2=new   Polygon(x1,y1,4);  
  g.drawPolygon(p2);  
  g.setColor(Color.RED);  
  g.fillPolygon(p2);  
   
   
  x2[0]=x1[2]+5*width/139;  
  y2[0]=y1[2]+5*height/232;  
  x2[1]=x2[0]+26*width/139;  
  y2[1]=y2[0]-26*height/232;  
  x2[2]=x2[1];  
  y2[2]=y2[1]+96*height/232;  
  x2[3]=x2[2]-8*width/139;  
  y2[3]=y[2]+15*height/232;  
  x2[4]=x2[0];  
  y2[4]=y2[0]+67*height/232;  
  Polygon   p3=new   Polygon(x2,y2,5);  
  g.drawPolygon(p3);  
  g.setColor(Color.RED);  
  g.fillPolygon(p3);  
   
  x3[0]=x[1];  
  y3[0]=y[2]+8*height/232;  
  x3[1]=x3[0]+86*width/139;  
  y3[1]=y3[0];  
  x3[2]=x3[1]+12*width/139;  
  y3[2]=y3[1]+12*height/232;  
  x3[3]=x3[2]-12*width/139;  
  y3[3]=y3[2]+12*height/232;  
  x3[4]=x3[3]-86*width/139;  
  y3[4]=y3[3];  
  x3[5]=x3[4]-12*width/139;  
  y3[5]=y3[3]-12*height/232;  
  Polygon   p4=new   Polygon(x3,y3,6);  
          g.drawPolygon(p4);  
  g.setColor(Color.RED);  
  g.fillPolygon(p4);  
   
   
   
  x4[0]=x3[4];  
  y4[0]=y3[4]+8*height/232;  
  x4[1]=x3[4];  
  y4[1]=y4[0]+67*height/232;  
  x4[2]=x4[1]-26*width/139;  
  y4[2]=y4[1]+26*height/232;  
  x4[3]=x4[2];  
  y4[3]=y4[2]-96*height/232;  
          x4[4]=x4[3]+12*width/139;  
  y4[4]=y4[3]-11*height/232;  
  Polygon   p5=new   Polygon(x4,y4,5);  
  g.drawPolygon(p5);  
  g.setColor(Color.RED);  
  g.fillPolygon(p5);  
   
   
  x5[0]=x4[1]+5*width/139;;  
  y5[0]=y4[1]+5*height/232;  
  x5[1]=x5[0]+80*width/139;  
  y5[1]=y5[0];  
  x5[2]=x5[1]+26*width/139;  
  y5[2]=y5[1]+26*height/232;  
  x5[3]=x5[0]-26*width/139;  
  y5[3]=y5[0]+26*height/232;  
  Polygon   p6=new   Polygon(x5,y5,4);  
  g.drawPolygon(p6);  
  g.setColor(Color.RED);  
  g.fillPolygon(p6);  
   
   
  x6[0]=x2[3];  
  y6[0]=y2[3]+8*height/232;  
  x6[1]=x6[0]+10*width/139;  
  y6[1]=y6[0]+10*height/232;  
  x6[2]=x6[1];  
  y6[2]=y6[1]+96*height/232;  
  x6[3]=x6[2]-26*width/139;  
  y6[3]=y6[2]-26*height/232;  
          x6[4]=x6[3];  
  y6[4]=y3[4]+8*height/232;  
  Polygon   p7=new   Polygon(x6,y6,5);  
  g.drawPolygon(p7);  
  g.setColor(Color.RED);  
  g.fillPolygon(p7);  
   
   
   
   
   
   
  }  
  public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
  this.width=width;  
  this.height=height;  
            super.setBounds(x,y,width,height);  
                  repaint();  
   
  }  
   
  Top

12 楼tondayong1981(bryan)回复于 2004-12-05 15:57:45 得分 0

接着:  
  public   Dimension   getMinimumSize()  
  {  
  return   new   Dimension(width,height);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(width,height);  
  }  
  private   int   width,height,a,b;  
   
        int[]   x   =new   int[5];  
          int[]   y   =new   int[5];  
           
          int[]   x1   =new   int[4];  
          int[]   y1   =new   int[4];  
           
          int[]   x2=new   int[5];  
          int[]   y2   =new   int[5];  
           
          int[]   x3=new   int[6];  
          int[]   y3   =new   int[6];  
           
          int[]   x4=new   int[5];  
          int[]   y4=new   int[5];  
           
           
          int[]   x5   =new   int[4];  
          int[]   y5   =new   int[4];  
           
          int[]   x6   =new   int[5];  
          int[]   y6   =new   int[5];  
           
                 
  }  
   
  public   class   Calculator   extends   JFrame   implements   ActionListener  
  {  
          JButton   button0,button1,button2,button3,button4,button5,button6,button7,button8,button9;  
  JButton   buttonBk,   buttonCe,   buttonC;  
          JButton   buttonMC,   buttonMR,   buttonMS,   buttonMAdd;  
          JButton   buttonDot,   buttonAddAndSub,   buttonAdd,   buttonSub,   buttonMul,  
          buttonDiv,   buttonMod;  
          JButton   buttonSqrt,   buttonDaoshu,   buttonEqual;  
   
   
  JTextField   textOutput;  
  public   Calculator()  
  {  
   
  super("计算器程序");  
  Container   container=getContentPane();  
          JPanel   panel=new   JPanel();  
          container.add(panel);  
          panel.setLayout(new   BorderLayout());  
          SevenDigitalDemo   panel1=new   SevenDigitalDemo();  
          panel1.setBackground(Color.RED);  
          panel1.add(new   JButton("bbb"));  
          panel.add(panel1,BorderLayout.NORTH);  
          JPanel   panel2=new   JPanel();  
          JPanel   panel3=new   JPanel();  
          panel.add(panel2,BorderLayout.SOUTH);  
          panel2.setLayout(new   BorderLayout());  
          panel2.add(panel3,BorderLayout.NORTH);  
          panel3.setLayout(new   FlowLayout(FlowLayout.RIGHT));  
          JButton   buttonBk   =   new   JButton("Backspace");  
          buttonBk.setForeground(new   Color(255,   0,   0));  
        JButton   buttonCe   =   new   JButton("CE");  
          buttonCe.setForeground(new   Color(255,   0,   0));  
          JButton   buttonC   =   new   JButton("C");  
          buttonC.setForeground(new   Color(255,   0,   0));  
          JButton   buttonQuit=new   JButton("Quit");  
          buttonQuit.setForeground(new   Color(255,   0,   0));  
          buttonBk.addActionListener(this);  
          buttonCe.addActionListener(this);  
            buttonC.addActionListener(this);  
            buttonQuit.addActionListener(this);  
          panel3.add(buttonBk);  
          panel3.add(buttonCe);  
          panel3.add(buttonC);  
          panel3.add(buttonQuit);  
          JPanel   panel4=new   JPanel();  
          panel2.add(panel4,BorderLayout.CENTER);  
          panel4.setLayout(new   GridLayout(4,5));  
          JButton   button0=new   JButton("0");  
          button0.setForeground(Color.BLUE);  
          button0.addActionListener(this);  
          JButton   button1=new   JButton("1");  
          button1.setForeground(Color.BLUE);  
          button1.addActionListener(this);  
          JButton   button2=new   JButton("2");  
                  button2.setForeground(Color.BLUE);  
                  button2.addActionListener(this);  
          JButton   button3=new   JButton("3");  
                  button3.setForeground(Color.BLUE);  
            button3.addActionListener(this);  
          JButton   button4=new   JButton("4");  
          button4.setForeground(Color.BLUE);  
          button4.addActionListener(this);  
          JButton   button5=new   JButton("5");  
          button5.setForeground(Color.BLUE);  
          button5.addActionListener(this);  
          JButton   button6=new   JButton("6");  
          button6.setForeground(Color.BLUE);  
          button6.addActionListener(this);  
          JButton   button7=new   JButton("7");  
                  button7.setForeground(Color.BLUE);  
                  button7.addActionListener(this);  
          JButton   button8=new   JButton("8");  
                  button8.setForeground(Color.BLUE);  
                  button8.addActionListener(this);  
          JButton   button9=new   JButton("9");  
          button9.setForeground(Color.BLUE);  
            button9.addActionListener(this);  
          JButton   buttonDiv=new   JButton("/");  
          buttonDiv.setForeground(Color.RED);  
            buttonDiv.addActionListener(this);  
          JButton   buttonSqrt=new   JButton("sqrt");  
          buttonSqrt.setForeground(Color.BLUE);  
          buttonSqrt.addActionListener(this);  
                  JButton   buttonMul=new   JButton("*");  
                  buttonMul.setForeground(Color.RED);  
              buttonMul.addActionListener(this);  
                  JButton   buttonMod=new   JButton("%");  
                  buttonMod.setForeground(Color.BLUE);  
                  buttonMod.addActionListener(this);  
              JButton   buttonSub=new   JButton("-");  
              buttonSub.setForeground(Color.RED);  
              buttonSub.addActionListener(this);  
              JButton   buttonDaoshu=new   JButton("1/x");  
              buttonDaoshu.setForeground(Color.BLUE);  
              buttonDaoshu.addActionListener(this);  
              JButton   buttonAddandSub=new   JButton("+/-");  
              buttonAddandSub.setForeground(Color.BLUE);  
            buttonAddandSub.addActionListener(this);  
          JButton   buttonPoint=new   JButton(".");  
          buttonPoint.setForeground(Color.BLUE);  
          buttonPoint.addActionListener(this);  
            JButton   buttonAdd=new   JButton("+");  
            buttonAdd.setForeground(Color.BLUE);  
                  buttonAdd.addActionListener(this);    
            JButton   buttonEqual=new   JButton("=");  
                  buttonEqual.setForeground(Color.red);  
                  buttonEqual.addActionListener(this);  
            panel4.add(button7);  
          panel4.add(button8);  
            panel4.add(button9);  
            panel4.add(buttonDiv);  
            panel4.add(buttonSqrt);  
            panel4.add(button4);  
            panel4.add(button5);  
            panel4.add(button6);  
            panel4.add(buttonMul);  
            panel4.add(buttonMod);  
            panel4.add(button1);  
            panel4.add(button2);  
            panel4.add(button3);  
            panel4.add(buttonSub);  
          panel4.add(buttonDaoshu);  
            panel4.add(button0);  
            panel4.add(buttonAddandSub);  
            panel4.add(buttonPoint);  
            panel4.add(buttonAdd);  
            panel4.add(buttonEqual);  
  setSize(350,300);  
  show();  
  }  
   
   
   
   
   
  public   static   void   main(String[]   args)  
  {  
  Calculator   calculator=new   Calculator();  
  calculator.setDefaultCloseOperation(Calculator.EXIT_ON_CLOSE);  
   
  }  
   
  public     void   actionPerformed(ActionEvent   e)  
  {  
  if   (e.getSource()==button0)  
  {  
   
  }  
   
  }  
  }  
   
   
   
  Top

13 楼yz790724(想想)回复于 2004-12-06 08:51:11 得分 0

学习中Top

14 楼superman421(38度的雪)回复于 2004-12-06 13:40:13 得分 0

import   java.awt.*;  
  import   javax.swing.*;  
  import   javax.swing.border.*;  
  import   java.awt.event.*;  
   
  public   class   Calculator   extends   JFrame   implements   ActionListener  
  {  
          JButton   button0,button1,button2,button3,button4,button5,button6,button7,button8,button9;  
  JButton   buttonBk,   buttonCe,   buttonC;  
          JButton   buttonMC,   buttonMR,   buttonMS,   buttonMAdd;  
          JButton   buttonDot,   buttonAddAndSub,   buttonAdd,   buttonSub,   buttonMul,  
          buttonDiv,   buttonMod;  
          JButton   buttonSqrt,   buttonDaoshu,   buttonEqual;  
          DecimalComponent   panel1;  
   
   
  JTextField   textOutput;  
  public   Calculator()  
  {  
   
  super("计算器程序");  
  Container   container=getContentPane();  
          JPanel   panel=new   JPanel();  
          container.add(panel);  
          panel.setLayout(new   BorderLayout());  
          panel1=new   DecimalComponent();  
          panel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));  
          panel.add(panel1,BorderLayout.CENTER);  
          JPanel   panel2=new   JPanel();  
          JPanel   panel3=new   JPanel();  
          panel.add(panel2,BorderLayout.SOUTH);  
          panel2.setLayout(new   BorderLayout());  
          panel2.add(panel3,BorderLayout.NORTH);  
          panel3.setLayout(new   FlowLayout(FlowLayout.RIGHT));  
          JButton   buttonBk   =   new   JButton("Backspace");  
          buttonBk.setForeground(new   Color(255,   0,   0));  
        JButton   buttonCe   =   new   JButton("CE");  
          buttonCe.setForeground(new   Color(255,   0,   0));  
          JButton   buttonC   =   new   JButton("C");  
          buttonC.setForeground(new   Color(255,   0,   0));  
          JButton   buttonQuit=new   JButton("Quit");  
          buttonQuit.setForeground(new   Color(255,   0,   0));  
          buttonBk.addActionListener(this);  
          buttonCe.addActionListener(this);  
            buttonC.addActionListener(this);  
            buttonQuit.addActionListener(this);  
          panel3.add(buttonBk);  
          panel3.add(buttonCe);  
          panel3.add(buttonC);  
          panel3.add(buttonQuit);  
          JPanel   panel4=new   JPanel();  
          panel2.add(panel4,BorderLayout.CENTER);  
          panel4.setLayout(new   GridLayout(4,5));  
          JButton   button0=new   JButton("0");  
          button0.setForeground(Color.BLUE);  
          button0.addActionListener(this);  
          JButton   button1=new   JButton("1");  
          button1.setForeground(Color.BLUE);  
          button1.addActionListener(this);  
          JButton   button2=new   JButton("2");  
                  button2.setForeground(Color.BLUE);  
                  button2.addActionListener(this);  
          JButton   button3=new   JButton("3");  
                  button3.setForeground(Color.BLUE);  
            button3.addActionListener(this);  
          JButton   button4=new   JButton("4");  
          button4.setForeground(Color.BLUE);  
          button4.addActionListener(this);  
          JButton   button5=new   JButton("5");  
          button5.setForeground(Color.BLUE);  
          button5.addActionListener(this);  
          JButton   button6=new   JButton("6");  
          button6.setForeground(Color.BLUE);  
          button6.addActionListener(this);  
          JButton   button7=new   JButton("7");  
                  button7.setForeground(Color.BLUE);  
                  button7.addActionListener(this);  
          JButton   button8=new   JButton("8");  
                  button8.setForeground(Color.BLUE);  
                  button8.addActionListener(this);  
          JButton   button9=new   JButton("9");  
          button9.setForeground(Color.BLUE);  
            button9.addActionListener(this);  
          JButton   buttonDiv=new   JButton("/");  
          buttonDiv.setForeground(Color.RED);  
            buttonDiv.addActionListener(this);  
          JButton   buttonSqrt=new   JButton("sqrt");  
          buttonSqrt.setForeground(Color.BLUE);  
          buttonSqrt.addActionListener(this);  
                  JButton   buttonMul=new   JButton("*");  
                  buttonMul.setForeground(Color.RED);  
              buttonMul.addActionListener(this);  
                  JButton   buttonMod=new   JButton("%");  
                  buttonMod.setForeground(Color.BLUE);  
                  buttonMod.addActionListener(this);  
              JButton   buttonSub=new   JButton("-");  
              buttonSub.setForeground(Color.RED);  
              buttonSub.addActionListener(this);  
              JButton   buttonDaoshu=new   JButton("1/x");  
              buttonDaoshu.setForeground(Color.BLUE);  
              buttonDaoshu.addActionListener(this);  
              JButton   buttonAddandSub=new   JButton("+/-");  
              buttonAddandSub.setForeground(Color.BLUE);  
            buttonAddandSub.addActionListener(this);  
          JButton   buttonPoint=new   JButton(".");  
          buttonPoint.setForeground(Color.BLUE);  
          buttonPoint.addActionListener(this);  
            JButton   buttonAdd=new   JButton("+");  
            buttonAdd.setForeground(Color.BLUE);  
                  buttonAdd.addActionListener(this);    
            JButton   buttonEqual=new   JButton("=");  
                  buttonEqual.setForeground(Color.red);  
                  buttonEqual.addActionListener(this);  
            panel4.add(button7);  
          panel4.add(button8);  
            panel4.add(button9);  
            panel4.add(buttonDiv);  
            panel4.add(buttonSqrt);  
            panel4.add(button4);  
            panel4.add(button5);  
            panel4.add(button6);  
            panel4.add(buttonMul);  
            panel4.add(buttonMod);  
            panel4.add(button1);  
            panel4.add(button2);  
            panel4.add(button3);  
            panel4.add(buttonSub);  
          panel4.add(buttonDaoshu);  
            panel4.add(button0);  
            panel4.add(buttonAddandSub);  
            panel4.add(buttonPoint);  
            panel4.add(buttonAdd);  
            panel4.add(buttonEqual);  
  pack();  
  show();  
  }  
   
  public   static   void   main(String[]   args)  
  {  
  Calculator   calculator=new   Calculator();  
  calculator.setDefaultCloseOperation(Calculator.EXIT_ON_CLOSE);  
   
  }  
   
  public     void   actionPerformed(ActionEvent   e)  
  {  
  panel1.setNum(-1234567890.456);  
  }  
  }Top

15 楼superman421(38度的雪)回复于 2004-12-06 13:41:25 得分 0

import   java.awt.*;  
  import   javax.swing.*;  
  import   java.text.*;  
   
  public   class   DecimalComponent   extends   JComponent  
  {  
  private   int   ComWidth=600,ComHeight=80;  
  private   int   width,height;  
  private   int   X=0,Y=0;  
  private   String   num="";  
  private   int   style[]=new   int[8];  
  DecimalFormat   fmt=new   DecimalFormat("####.###############");  
   
  public   DecimalComponent(){  
  this.setMinimumSize(new   Dimension(ComWidth,ComHeight));  
  this.setPreferredSize(new   Dimension(ComWidth,ComHeight));  
  }  
   
  public   void   setNum(double   a){  
  num=fmt.format(a);  
  if(num.length()>15)  
  num=num.substring(0,15);  
  repaint();  
  }  
   
  public   void   paint(Graphics   g)  
  {  
  this.setBackground(Color.white);  
                  g.setColor(getBackground());  
                  g.fillRect(0,   0,ComWidth,ComHeight);  
                  g.setColor(getForeground());  
  width=ComWidth/17;  
  int   widthAll=ComWidth/15;  
  height=7*ComHeight/8;  
  Y=ComHeight/16;  
  X=ComWidth;  
   
  for(int   i=num.length()-1;i>=0;i--){  
  if(num.charAt(i)!='.')  
  X-=widthAll;  
  else  
  X-=widthAll/5;  
  getPositions(X,Y);  
  convert(num.charAt(i));  
  draw(g);  
  }  
   
  }  
   
  public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
  this.ComWidth=width;  
  this.ComHeight=height;  
  super.setBounds(x,y,width,height);  
  repaint();  
   
  }  
   
  public   Dimension   getMinimumSize()  
  {  
  return   new   Dimension(ComWidth,ComHeight);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(ComWidth,ComHeight);  
  }  
   
  private   void   convert(char   a){  
  switch(a){  
  case   '0':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[6]=style[7]=0;  
  break;  
  case   '1':  
  for(int   i=0;i<8;i++)   style[i]=0;  
  style[1]=style[2]=1;  
  style[7]=0;  
  break;  
  case   '2':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[5]=style[2]=style[7]=0;  
  break;  
  case   '3':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[4]=style[5]=style[7]=0;  
  break;  
  case   '4':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[0]=style[3]=style[4]=style[7]=0;  
  break;  
  case   '5':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[1]=style[4]=style[7]=0;  
  break;  
  case   '6':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[1]=style[7]=0;  
  break;  
  case   '7':  
  for(int   i=0;i<8;i++)   style[i]=0;  
  style[0]=style[1]=style[2]=1;  
  style[7]=0;  
  break;  
  case   '8':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[7]=0;  
  break;  
  case   '9':  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[4]=style[7]=0;  
  break;  
  case   '.':  
  for(int   i=0;i<8;i++)   style[i]=0;  
  style[7]=1;  
  break;  
  case   '-':  
  for(int   i=0;i<8;i++)   style[i]=0;  
  style[6]=1;  
  break;  
  default:  
  for(int   i=0;i<8;i++)   style[i]=1;  
  style[1]=style[2]=0;  
  break;  
  }  
  }  
  private   void   getPositions(int   a,int   b){  
  x[0]=a;  
  y[0]=b+5*height/232;  
  x[1]=x[0]+26*width/139;  
  y[1]=y[0]+26*height/232;  
  x[2]=x[1];  
          y[2]=y[1]+67*height/232;  
  x[3]=x[2]-15*width/139;  
          y[3]=y[2]+15*height/232;  
  x[4]=a;  
  y[4]=y[0]+96*height/232;  
  ///////////////////////  
  x1[0]=x[0]+5*width/139;  
  y1[0]=y[0]-5*height/232;  
  x1[1]=x1[0]+127*width/139;  
  y1[1]=y1[0];  
  x1[2]=x1[1]-26*width/139;  
  y1[2]=y1[1]+26*height/232;  
  x1[3]=x[0]+31*width/139;  
  y1[3]=y1[0]+26*height/232;  
  /////////////////////////  
  x2[0]=x1[2]+5*width/139;  
  y2[0]=y1[2]+5*height/232;  
  x2[1]=x2[0]+26*width/139;  
  y2[1]=y2[0]-26*height/232;  
  x2[2]=x2[1];  
  y2[2]=y2[1]+96*height/232;  
  x2[3]=x2[2]-8*width/139;  
  y2[3]=y[2]+15*height/232;  
  x2[4]=x2[0];  
  y2[4]=y2[0]+67*height/232;  
  //////////////////////////  
  x3[0]=x[1];  
  y3[0]=y[2]+8*height/232;  
  x3[1]=x3[0]+86*width/139;  
  y3[1]=y3[0];  
  x3[2]=x3[1]+12*width/139;  
  y3[2]=y3[1]+12*height/232;  
  x3[3]=x3[2]-12*width/139;  
  y3[3]=y3[2]+12*height/232;  
  x3[4]=x3[3]-86*width/139;  
  y3[4]=y3[3];  
  x3[5]=x3[4]-12*width/139;  
  y3[5]=y3[3]-12*height/232;  
  //////////////////////////  
  x4[0]=x3[4];  
  y4[0]=y3[4]+8*height/232;  
  x4[1]=x3[4];  
  y4[1]=y4[0]+67*height/232;  
  x4[2]=x4[1]-26*width/139;  
  y4[2]=y4[1]+26*height/232;  
  x4[3]=x4[2];  
  y4[3]=y4[2]-96*height/232;  
  x4[4]=x4[3]+12*width/139;  
  y4[4]=y4[3]-11*height/232;  
  ////////////////////////////  
  x5[0]=x4[1]+5*width/139;;  
  y5[0]=y4[1]+5*height/232;  
  x5[1]=x5[0]+80*width/139;  
  y5[1]=y5[0];  
  x5[2]=x5[1]+26*width/139;  
  y5[2]=y5[1]+26*height/232;  
  x5[3]=x5[0]-26*width/139;  
  y5[3]=y5[0]+26*height/232;  
  ///////////////////////////  
  x6[0]=x2[3];  
  y6[0]=y2[3]+8*height/232;  
  x6[1]=x6[0]+10*width/139;  
  y6[1]=y6[0]+10*height/232;  
  x6[2]=x6[1];  
  y6[2]=y6[1]+96*height/232;  
  x6[3]=x6[2]-26*width/139;  
  y6[3]=y6[2]-26*height/232;  
  x6[4]=x6[3];  
  y6[4]=y3[4]+8*height/232;  
  }  
   
  private   void   draw(Graphics   g){  
  if(style[5]==1){  
  Polygon   p1=new   Polygon(x,y,5);  
  g.drawPolygon(p1);  
  g.setColor(Color.red);  
  g.fillPolygon(p1);  
  }  
   
  if(style[0]==1){  
  Polygon   p2=new   Polygon(x1,y1,4);  
  g.drawPolygon(p2);  
  g.setColor(Color.RED);  
  g.fillPolygon(p2);  
  }  
   
  if(style[1]==1){  
  Polygon   p3=new   Polygon(x2,y2,5);  
  g.drawPolygon(p3);  
  g.setColor(Color.RED);  
  g.fillPolygon(p3);  
  }  
   
  if(style[6]==1){  
  Polygon   p4=new   Polygon(x3,y3,6);  
  g.drawPolygon(p4);  
  g.setColor(Color.RED);  
  g.fillPolygon(p4);  
  }  
   
  if(style[4]==1){  
  Polygon   p5=new   Polygon(x4,y4,5);  
  g.drawPolygon(p5);  
  g.setColor(Color.RED);  
  g.fillPolygon(p5);  
  }  
   
  if(style[3]==1){  
  Polygon   p6=new   Polygon(x5,y5,4);  
  g.drawPolygon(p6);  
  g.setColor(Color.RED);  
  g.fillPolygon(p6);  
  }  
   
  if(style[2]==1){  
  Polygon   p7=new   Polygon(x6,y6,5);  
  g.drawPolygon(p7);  
  g.setColor(Color.RED);  
  g.fillPolygon(p7);  
   
  }  
   
  if(style[7]==1){  
  g.setColor(Color.RED);  
  g.fillOval(x[0],y[0]+7*height/8,width/6,height/8);  
  }  
  }  
   
        int[]   x   =new   int[6];  
          int[]   y   =new   int[6];  
           
          int[]   x1   =new   int[4];  
          int[]   y1   =new   int[4];  
           
          int[]   x2=new   int[5];  
          int[]   y2   =new   int[5];  
           
          int[]   x3=new   int[6];  
          int[]   y3   =new   int[6];  
           
          int[]   x4=new   int[5];  
          int[]   y4=new   int[5];  
           
           
          int[]   x5   =new   int[4];  
          int[]   y5   =new   int[4];  
           
          int[]   x6   =new   int[5];  
          int[]   y6   =new   int[5];  
  }  
  Top

16 楼superman421(38度的雪)回复于 2004-12-06 13:46:10 得分 0

帮你简单的改了一下,结构如果不合你要求自己再改改,意思就是这样的了。  
  你把显示数字的看成一个显示框就好了,不用太多的关心它,你的操作不是集中在这个上面的。  
  你的操作应该是如何处理输入,然后把结果显示给别人看就可以了。  
  如果你想结果自己改变,可以参考一下observer这种设计模式,时间问题就不多说了!  
  继续努力!Top

17 楼tondayong1981(bryan)回复于 2004-12-09 15:53:19 得分 0

main和前面一样,下面帮我改一下(我改了,不能放大,放大后字户间坐标不对)。在main中能帮我写一下事件吗,就写个例子,比如button0的  
  下面的double   number有值后就能显示。但我不知到,在main中怎样用他/  
  import   java.awt.*;  
  import   javax.swing.*;  
  import   java.text.*;  
   
  public   class   SevenDigitalDemo   extends   JPanel    
  { Polygon   p1,p2,p3,p4,p5,p6,p7;  
  Dimension   tsize;  
  //private   int   X=0,Y=0;  
  private   int   ComWidth=232,ComHeight=139;  
   
  private   int   width   =ComWidth/6,height   =   ComHeight*4/6,a,b;  
  String   num="0";  
  private   int   style[]=new   int[8];  
  boolean   []bIsShow=new   boolean[8];  
  DecimalFormat   fmt=new   DecimalFormat("####.###############");  
  double   number;  
           
           
  public   SevenDigitalDemo()  
  {  
    this.setMinimumSize(new   Dimension(ComWidth,ComHeight));  
            this.setPreferredSize(new   Dimension(ComWidth,ComHeight));  
              //enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);  
  }  
   
   
  public   void   setNumber(double   a)  
  {  
  number=a;  
   
   
  }  
  public     void   getPosition(int   a,int   b)  
  {       //super.paint(g)   ;  
   
  x[0]=a;  
  y[0]=b+12;//+5*height/232;  
  x[1]=x[0]+26*width/139;  
  y[1]=y[0]+26*height/232;  
  x[2]=x[1];  
          y[2]=y[1]+67*height/232;  
  x[3]=x[2]-15*width/139;  
          y[3]=y[2]+15*height/232;  
  x[4]=a;  
  y[4]=y[0]+96*height/232;  
  p1=new   Polygon(x,y,5);  
   
  //////////////////////////////////////////////  
          x1[0]=x[0]+5*width/139;  
  y1[0]=y[0]-5*height/232;  
  x1[1]=x1[0]+127*width/139;  
  y1[1]=y1[0];  
  x1[2]=x1[1]-26*width/139;  
  y1[2]=y1[1]+26*height/232;  
  x1[3]=x[0]+31*width/139;  
  y1[3]=y1[0]+26*height/232;  
  p2=new   Polygon(x1,y1,4);  
   
  ///////////////////////////////////////////////////  
  x2[0]=x1[2]+5*width/139;  
  y2[0]=y1[2]+5*height/232;  
  x2[1]=x2[0]+26*width/139;  
  y2[1]=y2[0]-26*height/232;  
  x2[2]=x2[1];  
  y2[2]=y2[1]+96*height/232;  
  x2[3]=x2[2]-8*width/139;  
  y2[3]=y[2]+15*height/232;  
  x2[4]=x2[0];  
  y2[4]=y2[0]+67*height/232;  
  p3=new   Polygon(x2,y2,5);  
   
  //////////////////////////////////////////////////////  
  x3[0]=x[1];  
  y3[0]=y[2]+8*height/232;  
  x3[1]=x3[0]+86*width/139;  
  y3[1]=y3[0];  
  x3[2]=x3[1]+12*width/139;  
  y3[2]=y3[1]+12*height/232;  
  x3[3]=x3[2]-12*width/139;  
  y3[3]=y3[2]+12*height/232;  
  x3[4]=x3[3]-86*width/139;  
  y3[4]=y3[3];  
  x3[5]=x3[4]-12*width/139;  
  y3[5]=y3[3]-12*height/232;  
                  p4=new   Polygon(x3,y3,6);  
   
  //////////////////////////////////////////////////////////  
  x4[0]=x3[4];  
  y4[0]=y3[4]+8*height/232;  
  x4[1]=x3[4];  
  y4[1]=y4[0]+67*height/232;  
  x4[2]=x4[1]-26*width/139;  
  y4[2]=y4[1]+26*height/232;  
  x4[3]=x4[2];  
  y4[3]=y4[2]-96*height/232;  
          x4[4]=x4[3]+12*width/139;  
  y4[4]=y4[3]-11*height/232;  
  p5=new   Polygon(x4,y4,5);  
   
   
  ///////////////////////////////////////////////  
  x5[0]=x4[1]+5*width/139;;  
  y5[0]=y4[1]+5*height/232;  
  x5[1]=x5[0]+80*width/139;  
  y5[1]=y5[0];  
  x5[2]=x5[1]+26*width/139;  
  y5[2]=y5[1]+26*height/232;  
  x5[3]=x5[0]-26*width/139;  
  y5[3]=y5[0]+26*height/232;  
  p6=new   Polygon(x5,y5,4);  
   
   
  //////////////////////////////////////////////////////  
   
  x6[0]=x2[3];  
  y6[0]=y2[3]+8*height/232;  
  x6[1]=x6[0]+10*width/139;  
  y6[1]=y6[0]+10*height/232;  
  x6[2]=x6[1];  
  y6[2]=y6[1]+96*height/232;  
  x6[3]=x6[2]-26*width/139;  
  y6[3]=y6[2]-26*height/232;  
          x6[4]=x6[3];  
  y6[4]=y3[4]+8*height/232;  
  p7=new   Polygon(x6,y6,5);  
   
  }  
   
    public   void   setBooleanNumber(char     a)  
        {    
          if(a=='0')  
          {  
          bIsShow[0]=true;  
          bIsShow[1]=true;  
          bIsShow[2]=true;  
          bIsShow[3]=false;  
          bIsShow[4]=true;  
          bIsShow[5]=true;  
          bIsShow[6]=true;  
          bIsShow[7]=true;  
   
          }  
          else   if(a=='1')  
          {  
          bIsShow[0]=false;  
          bIsShow[1]=false;  
          bIsShow[2]=true;  
          bIsShow[3]=false;  
          bIsShow[4]=false;  
          bIsShow[5]=false;  
          bIsShow[6]=true;  
          bIsShow[7]=false;  
   
          }  
          else   if(a=='2')  
          {  
          bIsShow[0]=false;  
          bIsShow[1]=true;  
          bIsShow[2]=true;  
          bIsShow[3]=true;  
          bIsShow[4]=true;  
          bIsShow[5]=true;  
          bIsShow[6]=false;  
          bIsShow[7]=true;  
   
          }  
          else   if(a=='3')  
          {  
          bIsShow[0]=false;  
          bIsShow[1]=true;  
          bIsShow[2]=true;  
          bIsShow[3]=true;  
          bIsShow[4]=false;  
          bIsShow[5]=true;  
          bIsShow[6]=true;  
          bIsShow[7]=true;  
               
          }  
          else   if(a=='4')  
          {  
          bIsShow[0]=true;  
          bIsShow[1]=false;  
          bIsShow[2]=true;  
          bIsShow[3]=true;  
          bIsShow[4]=false;  
          bIsShow[5]=false;  
          bIsShow[6]=true;  
          bIsShow[7]=true;  
       
          }  
          else   if(a=='5')  
          {  
          bIsShow[0]=true;  
          bIsShow[1]=true;  
          bIsShow[2]=false;  
          bIsShow[3]=true;  
          bIsShow[4]=false;  
          bIsShow[5]=true;  
          bIsShow[6]=true;  
          bIsShow[7]=true;  
               
          }  
          else   if(a=='6')  
          {  
          bIsShow[0]=true;  
          bIsShow[1]=true;  
          bIsShow[2]=false;  
          bIsShow[3]=true;  
          bIsShow[4]=true;  
          bIsShow[5]=true;  
          bIsShow[6]=true;  
          bIsShow[7]=true;  
             
          }  
          else   if(a=='7')  
          {  
          bIsShow[0]=false;  
          bIsShow[1]=true;  
          bIsShow[2]=true;  
          bIsShow[3]=false;  
          bIsShow[4]=false;  
          bIsShow[5]=false;  
          bIsShow[6]=true;  
          bIsShow[7]=false;  
                 
          }  
          else   if(a=='8')  
          {  
          bIsShow[0]=true;  
          bIsShow[1]=true;  
          bIsShow[2]=true;  
          bIsShow[3]=true;  
          bIsShow[4]=true;  
          bIsShow[5]=true;  
          bIsShow[6]=true;  
          bIsShow[7]=true;  
           
          }  
          else   if(a=='9')  
          {  
          bIsShow[0]=true;  
          bIsShow[1]=true;  
          bIsShow[2]=true;  
          bIsShow[3]=true;  
          bIsShow[4]=false;  
          bIsShow[5]=true;  
          bIsShow[6]=true;  
          bIsShow[7]=true;  
          }  
          else   if(a=='-')  
          {  
          bIsShow[0]=false;  
          bIsShow[1]=false;  
          bIsShow[2]=false;  
          bIsShow[3]=true;  
          bIsShow[4]=false;  
          bIsShow[5]=false;  
          bIsShow[6]=false;  
          bIsShow[7]=false;  
          }  
          else   if(a=='.')  
          {  
          bIsShow[0]=false;  
          bIsShow[1]=false;  
          bIsShow[2]=false;  
          bIsShow[3]=false;  
          bIsShow[4]=false;  
          bIsShow[5]=false;  
          bIsShow[6]=false;  
          bIsShow[7]=false;  
          }  
         
          }  
           
         
  Top

18 楼tondayong1981(bryan)回复于 2004-12-09 15:55:41 得分 0

public   void   paintComponent(Graphics   g)  
  {  
   
          super.paintComponent(g);  
          Graphics2D   g2   =   (Graphics2D)g;  
          g2.setColor(Color.red);  
           
          //tsize=getSize();  
                  //g.setColor(getBackground());  
                  //g.fillRect(0,   0,   ComWidth,   ComWidth);  
                  //g.setColor(getForeground());  
                  StringBuffer   sb   =   new   StringBuffer(new   Double(number).toString());  
                  char   c;  
                  int   a   =   ComWidth/500;  
                  int   b   =   0;  
                  for(int   i=0;i<sb.length();i++)  
                  {  
                  c   =   sb.charAt(i);  
                  getPosition(a,b);  
                  //sb.deleteCharAt(i);  
                  setBooleanNumber(c);  
  if(bIsShow[0])  
  g2.fillPolygon(p1);  
   
  if(bIsShow[1])  
  g2.fillPolygon(p2);  
   
  if(bIsShow[2])  
  g2.fillPolygon(p3);  
   
          if(bIsShow[3])  
  g2.fillPolygon(p4);  
   
  if(bIsShow[4])  
  g2.fillPolygon(p5);  
   
  if(bIsShow[5])  
  g2.fillPolygon(p6);  
   
  if(bIsShow[6])  
  g2.fillPolygon(p7);  
          if(!bIsShow[0]&&!bIsShow[1]&&!bIsShow[2]&&!bIsShow[3]&&!bIsShow[4]&&!bIsShow[5]&&!bIsShow[6]&&!bIsShow[7])  
                  g2.fillOval(x[0],y[0]+7*height/8,width/6,height/8);  
   
          if(c=='.')  
                  a=a+ComWidth/40;  
                  else  
                  a=a+ComWidth/12;  
  }  
   
  }  
  /*  
  for(int   i=0;i<num.length();i++)  
  {  
   
              width=tsize.width;  
              height=tsize.height;  
              width=tsize.width/6;  
              height=tsize.height*5/6;  
      a=tsize.width/40;  
              b=tsize.height/10;  
      CoordinateHandling   (a,b);  
     
  }*/  
         
   
  public   void   setBounds(int   x,int   y,int   width,int   height)  
  {  
  this.ComWidth=width;  
  this.ComHeight=height;  
  super.setBounds(x,y,width,height);  
  repaint();  
  }  
   
  public   Dimension   getMinimumSize()  
  {  
        return   new   Dimension(ComWidth,ComHeight);  
  }  
   
  public   Dimension   getPreferredSize()  
  {  
  return   new   Dimension(ComWidth,ComHeight);  
  }  
        int[]   x   =new   int[5];  
          int[]   y   =new   int[5];  
           
          int[]   x1   =new   int[4];  
          int[]   y1   =new   int[4];  
           
          int[]   x2=new   int[5];  
          int[]   y2   =new   int[5];  
           
          int[]   x3=new   int[6];  
          int[]   y3   =new   int[6];  
           
          int[]   x4=new   int[5];  
          int[]   y4=new   int[5];  
           
           
          int[]   x5   =new   int[4];  
          int[]   y5   =new   int[4];  
           
          int[]   x6   =new   int[5];  
          int[]   y6   =new   int[5];  
           
   
   
   
  }Top

19 楼tondayong1981(bryan)回复于 2004-12-09 16:16:44 得分 0

我改了成这样,行了。我按下按钮能显示了,我忘了用repaint()下面对吗。你把button0的事件写给我看一下。  
  public     void   actionPerformed(ActionEvent   e)  
  {  
  if   (e.getSource()==button0)  
  {  
   
  panel1.setNumber(23233223);  
  repaint();  
                   
  }  
  if   (e.getSource()==button1)  
  {  
   
  panel1.setNumber(1);  
  repaint();  
                   
  }  
   
   
  }Top

20 楼superman421(38度的雪)回复于 2004-12-09 22:57:08 得分 0

你把repaint()放到setNum()函数里面去,那样就不用你写repaint()了。怎么处理输入信息里面也给你说了一下。大体上框架可以用你现在的样子,只要在设置setNum处理一下就好了。Top

21 楼superman421(38度的雪)回复于 2004-12-09 23:05:44 得分 0

setNum(String   s){  
          number=a;  
          repaint();  
  }  
   
   
  setNum之前处理一下  
  if(e.getSource()==button0){  
          //把0加入输入字符串s  
          panel1.setNumber(s);  
  }Top

相关问题

  • 七段数码管是怎么接来的?
  • 求救:找七段数码管控件,提供下载网址也行。
  • 想写一个模拟七段数码显示管的程序,请各位给点思路。
  • 数码美女
  • 扫描四位七段码,最后一位比前3位亮许多,问题何在?
  • 买数码相机
  • PHP如何获取一张数码照片中的基本信息,譬如相机信息之类的资料?
  • 数码影楼系统
  • 哪有数码管控件
  • 关于数码相机的

关键词

  • 数码
  • 坐标
  • addpoint
  • polygon
  • comwidth
  • comheight
  • drawpolygon
  • fillpolygon
  • 七段数码
  • widthall

得分解答快速导航

  • 帖主:tondayong1981
  • shangqiao
  • superman421

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo