我的Jbuilder今不知怎的,就是不行,气得我没办法。

解决方案 »

  1.   

    PegAndDisks 也用了mouse的两个事件接口,不知是不是这个问题,是不是它捕获了,上一级就不能捕获了,但好像不是这样的。public class PegAndDisks extends JPanel implements MouseListener, MouseMotionListener {
      public void mouseClicked(MouseEvent mouseEvent){
      }
      public void mousePressed(MouseEvent mouseEvent){}
      public void mouseReleased(MouseEvent mouseEvent){}
      public void mouseEntered(MouseEvent mouseEvent){}
      public void mouseExited(MouseEvent mouseEvent){}
      public void mouseDragged(MouseEvent mouseEvent){
      }
      public void mouseMoved(MouseEvent mouseEvent){}
    }
      

  2.   

    奇怪,在我这里真的行
    我唯一的改动就是我没有PegAndDisks,所以用JPanel代替了
      

  3.   

    我把PegAndDisks,用JPanel代替也没问题,但用了PegAndDisks出问题了。
    看一下PegAndDisks:
    package jhanoitowers;import java.util.Vector;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class PegAndDisks extends JPanel implements MouseListener, MouseMotionListener {
      int diskNum=0;   //盘子个数
      int diskHeight=8;//to be get and set 盘子厚度
      int baseHeight=8;// to be get and set 底坐厚度
      int diskDiff=3;  //上一个盘子与下一个盘子宽度之差
      public PegAndDisks() {
        GridLayout pegLayout=new GridLayout();
        this.setBackground(Color.white);
        this.setLayout(pegLayout);
        this.setBackground(Color.white);
        this.setOpaque(true);
        this.setDiskNum(0);
        addMouseMotionListener(this);
        addMouseListener(this);
        this.validate();
      }
      public void paint(Graphics g){
        g.clearRect(0,0,this.getWidth(),this.getHeight());
        drawBaseAndPeg(g);
        drawDisks(g);
       }
      /**画底坐与柱子*/
      public void drawBaseAndPeg(Graphics g){//will be draw peg
          }
      /**画盘子*/
      public void drawDisks(Graphics g){//will be draw disks
         }
      public void addADisk(){
        this.setDiskNum(this.getDiskNum() + 1);
        repaint();
      }
      public void initDisk(int num){
        if(num>0){
          this.setDiskNum(num);
          this.repaint();
        }
      }
      public void removeADisk(){
        if(this.getDiskNum()>0){
          this.setDiskNum(this.getDiskNum() - 1);
          repaint();
        }
      }
      public int getDiskNum(){
        return this.diskNum;
      }
      public void setDiskNum(int diskNum){
        this.diskNum=diskNum;
      }
      public int getDiskDiff(){
        return this.diskDiff;
      }
      public void setDiskDiff(int diskDiff){
        this.diskDiff=diskDiff;
      }
      public int getDiskHeight(){
        return diskHeight;
      }
      public void setDiskHeight(int diskHeight){
        this.diskHeight=diskHeight;
      }
      public int getBaseHeight(){
        return baseHeight;
      }
      public void setBaseHeight(int baseHeight){
        this.baseHeight=baseHeight;
      }
      public void mouseClicked(MouseEvent mouseEvent){
        System.out.println("sub!");
        super.processMouseEvent(mouseEvent);
      }
      public void mousePressed(MouseEvent mouseEvent){}
      public void mouseReleased(MouseEvent mouseEvent){}
      public void mouseEntered(MouseEvent mouseEvent){}
      public void mouseExited(MouseEvent mouseEvent){}
      public void mouseDragged(MouseEvent mouseEvent){
      }
      public void mouseMoved(MouseEvent mouseEvent){}
    }
      

  4.   

    super.processMouseEvent(mouseEvent);那一句不行出现堆栈溢出。
      

  5.   

    我能编译成功,但是frame上什么都没有add??