Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将圆圈画到我单击的位置无效_Java - Fatal编程技术网

Java 将圆圈画到我单击的位置无效

Java 将圆圈画到我单击的位置无效,java,Java,我修改了密码 当我点击鼠标时,同样的输出没有圆圈 public class gui extends JFrame{ Scanner scan = new Scanner(System.in); private final JPanel mousepanal; private final JLabel stutespar ;

我修改了密码 当我点击鼠标时,同样的输出没有圆圈

                  public   class gui extends JFrame{
              Scanner scan = new Scanner(System.in);
                private final JPanel mousepanal;
                        private final JLabel stutespar ;



           int x=0;
            int y=0;



                  public gui() {
                     super("title");
                       mousepanal = new JPanel();

                       mousepanal.setBackground(Color.WHITE);
                       add(mousepanal,BorderLayout.CENTER);
                     add(edffnmlsdfkj,BorderLayout.WEST);
                       stutespar = new JLabel();
                       add(stutespar,BorderLayout.SOUTH);
                       Handlerclass handler = new Handlerclass();
                      Paintcir p = new Paintcir();
                       mousepanal.addMouseListener(handler);
                       mousepanal.addMouseMotionListener(handler);


                  }
///////////////////////////

        private class Handlerclass extends JPanel implements                     MouseListener,MouseMotionListener{

    @Override
    public void mouseClicked(MouseEvent e) {
        stutespar.setText(String.format("clicked at %d %d",e.getX(),e.getY()));


           x=e.getX();
           y=e.getY();
    @Override
    public void mousePressed(MouseEvent e) {
     stutespar.setText("you bress mouse");


    }

    @Override
    public void mouseReleased(MouseEvent e) {

         stutespar.setText("mouse realse");
    }

    @Override
    public void mouseEntered(MouseEvent e) {
      stutespar.setText("you entered the mouse");
   //   mousepanal.setBackground(Color.RED);
    }

    @Override
    public void mouseExited(MouseEvent e) {
      stutespar.setText("exsitd");
    //  mousepanal.setBackground(Color.WHITE);

    }

    @Override
    public void mouseDragged(MouseEvent e) {
        stutespar.setText("dragged");
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        stutespar.setText("moved");
    }
如何调用重新绘制

  repaint();

    }
/////////////////////////////////////////////////////////////

        private class Handlerclass extends JPanel implements                     MouseListener,MouseMotionListener{

    @Override
    public void mouseClicked(MouseEvent e) {
        stutespar.setText(String.format("clicked at %d %d",e.getX(),e.getY()));


           x=e.getX();
           y=e.getY();
    @Override
    public void mousePressed(MouseEvent e) {
     stutespar.setText("you bress mouse");


    }

    @Override
    public void mouseReleased(MouseEvent e) {

         stutespar.setText("mouse realse");
    }

    @Override
    public void mouseEntered(MouseEvent e) {
      stutespar.setText("you entered the mouse");
   //   mousepanal.setBackground(Color.RED);
    }

    @Override
    public void mouseExited(MouseEvent e) {
      stutespar.setText("exsitd");
    //  mousepanal.setBackground(Color.WHITE);

    }

    @Override
    public void mouseDragged(MouseEvent e) {
        stutespar.setText("dragged");
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        stutespar.setText("moved");
    }
//////////////////////////////////////////

                          @Override
                          public void paintComponent(Graphics g) {
                     super.paintComponents(g);
                  this.setBackground(Color.yellow);
                    g.setColor(Color.green);

           g.fillOval(x, y, 40, 40);
       //     g.fillOval(x+50, y+100, 40, 40);
              }





                 }
              }
这是主课

                public   class Main extends JFrame {
                public static void main(String[] args) {

                gui g = new gui();
              g.setDefaultCloseOperation(EXIT_ON_CLOSE);
                  g.setSize(500,500);
                    g.setVisible(true);





                       }   
                 }
一些问题:

你应该使用super.paintComponent。。。没有s

但是,在这种情况下,这并不重要,因为JFrame没有paintComponent方法。您应该始终在方法之前使用@Override,以确保您实际上正在重写类的方法

进行自定义绘制时:

可以替代JPanel的paintComponent方法,并将面板添加到框架中

应该在自定义面板类中定义MouseListener

在鼠标事件中,您需要调用repait,以便组件可以重新绘制自己


你能给我一些错误吗?您希望输出的确切内容是什么?输出是我单击时创建的帧。。什么也没发生x=e.getX;y=e.getY;x和y不只是用来表示放图形g globalg.drawOvalx,y,20,20;当我在框架中单击时,它会在线程AWT-EventQueue-0java.lang.NullPointerException中给我错误异常,我将其设置为全局,并给了您一些建议。代码在过去3天内没有更改,因此没有其他需要检查的内容。如果你需要更多的帮助,那么发布一个适当的帖子,使用给出的建议。