icon777 2022-05-19 18:28 采纳率: 60%
浏览 53
已结题

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 个错误

  • 写回答

3条回答 默认 最新

  • 程序喵正在路上 后端领域新星创作者 2022-05-19 18:46
    关注

    你是 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;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 赞助了问题酬金5元 5月19日
  • 修改了问题 5月19日
  • 展开全部

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办