java绘图 想要加如录入和读取功能,还有可以选择颜色变换还有复合图形功能。

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("圆");
     m_circle.addActionListener(new MenultemHandler());
    JMenuItem m_Rectangle = new JMenuItem("矩形");
    m_Rectangle.addActionListener(new MenultemHandler());
    JMenuItem m_oval = new JMenuItem("椭圆");
    m_oval.addActionListener(new MenultemHandler());
    JMenuItem m_point = new JMenuItem("点");
    m_point .addActionListener(new MenultemHandler());
    draw.add(m_line);
    draw.add(m_circle);
    draw.add(m_Rectangle);
    draw.add(m_oval);
    draw.add(m_point);
    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;
            case"点":
                 myc.setType(4);
                 myc.repaint();
        }
    }
}

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;
        case 4:
             g.fillOval(50, 50, 2, 2);

    }
}

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

}
这是已有代码 想要加如录入和读取功能,还有可以选择颜色变换还有复合图形功能。

录入读取什么。