java做的图像绘图

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

public class TestDraw extends JFrame{
MyCanvas myc = null;
public TestDraw(){
initFrame();
}
public void initFrame(){
setSize(800,600);

            JMenuBar jbar = new JMenuBar();
            JMenu draw = new JMenu("绘图");
            JMenultem m_line = new JMenultem("直线");
            m.line.addActionListener(new MenultemHandler());
            JMenuItem m_circle = new JMenultem("圆");
            JMenultem m_Rectangle = new JMenultem("矩形");
           JMenultem m_oval = new JMenultem("椭圆");
           draw.add(m_line);
           draw.add(m_circle);
           draw.add(m_Rectangle);
           draw.add(m_oval);
           jbar.add(draw);
           setJMenuBar(jbar);

           myc = new MyCanvas();
           add(myc);
           setVisible(true);
                                }

class MenultemHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
switch(e.getActionCommand()){
case "直线":
myc.setType(0);myc.repaint();
break;
case "圆":
myc.setType(1);myc.repaint();
break;
case "矩形":
myc.setType(2);
myc.repaint();
break;
case "椭圆":
myc.setType(3);myc.repaint();
break;
}
}
public static void main(String[] args){
new TestDraw();
}
}
}

class MyCanvas extends Canvas{
int shapeType = -1;
public void paint(Graphics g){
switch(shapeType){
case 0:
g.drawLine(50,50, 400,200);
break;

case 1:

        g.drawOval(50,50, 200,200);
        break;

case 2:

       g.drawRect(50,50, 200,200);
       break; 

case 3:

            g.drawOval(50,50, 400,200);
            break;
                    }
                                      }

public void setType(int shapeType){
this.shapeType = shapeType;
}
}
TestDraw.java:15: 错误: 找不到符号
JMenultem m_line = new JMenultem("直线");
^
符号: 类 JMenultem
位置: 类 TestDraw
TestDraw.java:15: 错误: 找不到符号
JMenultem m_line = new JMenultem("直线");
^
符号: 类 JMenultem
位置: 类 TestDraw

TestDraw.java:17: 错误: 找不到符号
JMenuItem m_circle = new JMenultem("圆");
^
符号: 类 JMenultem
位置: 类 TestDraw
TestDraw.java:18: 错误: 找不到符号
JMenultem m_Rectangle = new JMenultem("矩形");
^
符号: 类 JMenultem
位置: 类 TestDraw
TestDraw.java:18: 错误: 找不到符号
JMenultem m_Rectangle = new JMenultem("矩形");
^
符号: 类 JMenultem
位置: 类 TestDraw
TestDraw.java:19: 错误: 找不到符号
JMenultem m_oval = new JMenultem("椭圆");
^
符号: 类 JMenultem
位置: 类 TestDraw
TestDraw.java:19: 错误: 找不到符号
JMenultem m_oval = new JMenultem("椭圆");
^
符号: 类 JMenultem
位置: 类 TestDraw
TestDraw.java:49: 错误: 内部类TestDraw.MenultemHandler中的静态声明非法
public static void main(String[] args){
^
修饰符 'static' 仅允许在常量变量声明中使用
9 个错误

你是 JMenuItem 的 I 写成小写的 l 了吗

img

img

我把报错都改了,你试一下

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

public class TestDraw extends JFrame {
    MyCanvas myc = null;

    public TestDraw() {
        initFrame();
    }

    public void initFrame() {
        setSize(800, 600);

        JMenuBar jbar = new JMenuBar();
        JMenu draw = new JMenu("绘图");
        JMenuItem m_line = new JMenuItem("直线");
        m_line.addActionListener(new MenultemHandler());
        JMenuItem m_circle = new JMenuItem("圆");
        JMenuItem m_Rectangle = new JMenuItem("矩形");
        JMenuItem m_oval = new JMenuItem("椭圆");
        draw.add(m_line);
        draw.add(m_circle);
        draw.add(m_Rectangle);
        draw.add(m_oval);
        jbar.add(draw);
        setJMenuBar(jbar);

        myc = new MyCanvas();
        add(myc);
        setVisible(true);
    }

    class MenultemHandler implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            switch (e.getActionCommand()) {
                case "直线":
                    myc.setType(0);
                    myc.repaint();
                    break;
                case "圆":
                    myc.setType(1);
                    myc.repaint();
                    break;
                case "矩形":
                    myc.setType(2);
                    myc.repaint();
                    break;
                case "椭圆":
                    myc.setType(3);
                    myc.repaint();
                    break;
            }
        }

        public static void main(String[] args) {
            new TestDraw();
        }
    }
}

class MyCanvas extends Canvas {
    int shapeType = -1;

    public void paint(Graphics g) {
        switch (shapeType) {
            case 0:
                g.drawLine(50, 50, 400, 200);
                break;

            case 1:

                g.drawOval(50, 50, 200, 200);
                break;
            case 2:

                g.drawRect(50, 50, 200, 200);
                break;
            case 3:

                g.drawOval(50, 50, 400, 200);
                break;
        }
    }

    public void setType(int shapeType) {
        this.shapeType = shapeType;
    }
}

给你改好了

img


package com.demo;

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

public class TestDraw extends JFrame {

    MyCanvas myc = null;

    public TestDraw() {
        initFrame();
    }

    public static void main(String[] args){
        new TestDraw();
    }

    public void initFrame() {
        setSize(800, 600);
        JMenuBar jbar = new JMenuBar();
        JMenu draw = new JMenu("绘图");
        JMenuItem m_line = new JMenuItem("直线");
        m_line.addActionListener(new MenultemHandler());
        JMenuItem m_circle = new JMenuItem("圆");
        JMenuItem m_Rectangle = new JMenuItem("矩形");
        JMenuItem m_oval = new JMenuItem("椭圆");
        draw.add(m_line);
        draw.add(m_circle);
        draw.add(m_Rectangle);
        draw.add(m_oval);
        jbar.add(draw);
        setJMenuBar(jbar);
        myc = new MyCanvas();
        add(myc);
        setVisible(true);
    }

    class MenultemHandler implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            switch (e.getActionCommand()) {
                case "直线":
                    myc.setType(0);
                    myc.repaint();
                    break;
                case "圆":
                    myc.setType(1);
                    myc.repaint();
                    break;
                case "矩形":
                    myc.setType(2);
                    myc.repaint();
                    break;
                case "椭圆":
                    myc.setType(3);
                    myc.repaint();
                    break;
            }
        }


    }

    class MyCanvas extends Canvas {
        int shapeType = -1;

        @Override
        public void paint(Graphics g) {
            switch (shapeType) {
                case 0:
                    g.drawLine(50, 50, 400, 200);
                    break;
                case 1:
                    g.drawOval(50, 50, 200, 200);
                    break;
                case 2:
                    g.drawRect(50, 50, 200, 200);
                    break;
                case 3:
                    g.drawOval(50, 50, 400, 200);
                    break;
            }

        }

        public void setType(int shapeType) {
            this.shapeType = shapeType;
        }
    }
}

TestDraw.java:56: 错误: 内部类TestDraw.MenultemHandler中的静态声明非法
public static void main(String[] args) {
^
修饰符 'static' 仅允许在常量变量声明中使用
1 个错误
还是有这个报错