Java绘图程序给出了很多错误

时间:2015-08-08 18:46:56

标签: java swing user-interface awt

我想制作一个简单的绘画程序。因此,当您拖动鼠标时,一条线将在GUI中绘制。问题是当用户拖动鼠标时,它会自动绘制,但我的代码不起作用。有人可以告诉我这是怎么做到的?对不起我的英语,如果你不理解我的问题,请查看我的代码,也许你会比。

我的主要课程:

import javax.swing.JFrame;
public class MainClass {
    public static void main(String args[]){
        tuna kip = new tuna();
        kip.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        kip.setSize(800,600);
        kip.setVisible(true);
    }
}

这是我的另一堂课:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class tuna extends JFrame {
    JPanel jpanel = new JPanel();

    public tuna(){
        super("Painting Program");
        jpanel.setBackground(Color.WHITE);
        add(jpanel);

        hand handler = new hand();
        jpanel.addMouseListener(handler);
        jpanel.addMouseMotionListener(handler);
    }

    private class hand implements MouseListener ,MouseMotionListener { //THE ERRORS START TO APPEAR HERE
        public void mouseDragged(MouseEvent event){
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                g.setColor(Color.BLACK);
                g.fillRect(event.getX(), event.getY(), 5, 5);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:4)

  

当我尝试运行代码时,我收到太多错误消息:

您的意思是当您尝试compile代码时,您会收到编译错误。

class hand implements MouseListener ,MouseMotionListener 

您的类没有实现这些侦听器中的所有方法。您只实现一种方法。

阅读How to Write a MouseMotionListener上的Swing教程中的部分以获取工作示例。

如果您只关心mouseDragged()方法,那么您只需要实施MouseMotionListener

或者作为一种更简单的解决方案,您可以扩展MouseMotionAdapter。此类实现MouseMotionListener的所有方法,因此您只需要覆盖要更改的方法。本教程还讨论了适配器。

最后类名应该以大写字母开头。查看Java API,您会注意到这一点。遵循Java惯例,不要自己编写。

答案 1 :(得分:2)

是的,您的代码中存在很多问题。我只是编辑它,至少让它可以运行。只是研究和实验。我希望你能从中学到一些东西,即使我不解释所有这些变化。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class tuna extends JFrame {
    int x, y, w, h;

    MyPanel jpanel = new MyPanel();

    public tuna(){
        super("Painting Program");
        setLayout(new BorderLayout());
        jpanel.setBackground(Color.WHITE);
        add(jpanel);

        hand handler = new hand();
        jpanel.addMouseListener(handler);
        jpanel.addMouseMotionListener(handler);
    }

    private class hand implements MouseListener , MouseMotionListener { //THE ERRORS START TO APPEAR HERE
        public void mouseClicked(MouseEvent e) {
        }

        public void mousePressed(MouseEvent e) {
            x=e.getX();
            y=e.getY();
        }

        public void mouseReleased(MouseEvent e) {
        }

        public void mouseEntered(MouseEvent e) {
        }

        public void mouseExited(MouseEvent e) {
        }

        public void mouseDragged(MouseEvent e) {
            w = e.getX() - x;
            h = e.getY() - y;
            jpanel.repaint();
        }

        public void mouseMoved(MouseEvent e) {
        }
    }

    class MyPanel extends JPanel {
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            g.setColor(Color.BLACK);
            g.fillRect(x, y, w, h);
        }
    }
}