绘画方法中的绘画-Java

绘画方法中的绘画-Java,java,Java,我只是发布相关代码。我对java相当陌生,现在我正在构建一个程序,允许用户使用draw方法。但是,当我在界面中单击绘图按钮时,它会自动在页面的任何位置生成一条随机线,并且不允许用户交互。我认为错误发生在我的mouseListener方法中,但我不确定,因为这是我第一次这样做。任何帮助都将不胜感激。谢谢大家! 另外,输出的错误是:线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 public class SimplePaint exten

我只是发布相关代码。我对java相当陌生,现在我正在构建一个程序,允许用户使用draw方法。但是,当我在界面中单击绘图按钮时,它会自动在页面的任何位置生成一条随机线,并且不允许用户交互。我认为错误发生在我的mouseListener方法中,但我不确定,因为这是我第一次这样做。任何帮助都将不胜感激。谢谢大家!

另外,输出的错误是:线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常

public class SimplePaint extends JFrame {

    JButton drawing = new JButton();
    Line2D draw = new Line2D.Float();
    Point start = null;
    Point end = null;

public SimplePaint() {
    JPanel panel = new JPanel() {  
      {
          addMouseListener(new MouseAdapter() {
              public void mousePressed(MouseEvent e) {
                  start = e.getPoint();  
              }

              public void mouseReleased(MouseEvent e) {
                  start = e.getPoint();
                  //start = null;
              }
          });
          addMouseMotionListener(new MouseMotionAdapter() {
              public void mouseMoved(MouseEvent e) {
                  end = e.getPoint();
              }

              public void mouseDragged(MouseEvent e) {
                  end = e.getPoint();
                  repaint();
              }
          });
      }
  };

drawing.setText("Draw");
panel.add(drawing);

ActionListener actionListener = new ActionListener() {     
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == drawing) {
        draw = new Line2D.Float(start.x, start.y, end.x, end.y);
        }
        repaint();
    }
};

drawing.addActionListener(actionListener);

}

public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2 = (Graphics2D) g;
    Line2D line = new Line2D.Float(0, 250, 2000, 300);
    g2.draw(draw);
}
}

您正在调用JPanel的重新绘制,并且绘制方法在JFrame中,请尝试将侦听器添加到JFrame。您可以提出问题并发布错误和stacktrace吗?您是否阅读了此帖子:?然后阅读此帖子:仔细查看<代码>绘制属于您的面板,请改用
绘制组件
。您还忘了将panel添加到框架中。您正在调用JPanel的重新绘制,并且绘制方法位于JFrame中,请尝试将侦听器添加到JFrame。您可以提出问题并发布错误和stacktrace吗?您是否阅读了此帖子:?然后阅读此帖子:仔细查看<代码>绘制属于您的面板,请改用
绘制组件
。您还忘了将面板添加到框架中。