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

class DrawingApp extends JFrame implements ActionListener {
    private JPanel drawingPanel;
    private JButton lineButton, ellipseButton, rectangleButton, polygonButton;
    private int shapeType = 0; // 0: 直线, 1: 椭圆, 2: 矩形, 3: 多边形

    public DrawingApp() {
        setTitle('Drawing App');
        setSize(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建菜单栏
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        // 创建图形菜单
        JMenu shapeMenu = new JMenu('图形');
        menuBar.add(shapeMenu);

        // 创建直线菜单项
        JMenuItem lineMenuItem = new JMenuItem('直线');
        lineMenuItem.addActionListener(this);
        shapeMenu.add(lineMenuItem);

        // 创建椭圆菜单项
        JMenuItem ellipseMenuItem = new JMenuItem('椭圆');
        ellipseMenuItem.addActionListener(this);
        shapeMenu.add(ellipseMenuItem);

        // 创建矩形菜单项
        JMenuItem rectangleMenuItem = new JMenuItem('矩形');
        rectangleMenuItem.addActionListener(this);
        shapeMenu.add(rectangleMenuItem);

        // 创建多边形菜单项
        JMenuItem polygonMenuItem = new JMenuItem('多边形');
        polygonMenuItem.addActionListener(this);
        shapeMenu.add(polygonMenuItem);

        // 创建绘图面板
        drawingPanel = new JPanel();
        add(drawingPanel, BorderLayout.CENTER);

        // 创建按钮面板
        JPanel buttonPanel = new JPanel();
        add(buttonPanel, BorderLayout.SOUTH);

        // 创建直线按钮
        lineButton = new JButton('直线');
        lineButton.addActionListener(this);
        buttonPanel.add(lineButton);

        // 创建椭圆按钮
        ellipseButton = new JButton('椭圆');
        ellipseButton.addActionListener(this);
        buttonPanel.add(ellipseButton);

        // 创建矩形按钮
        rectangleButton = new JButton('矩形');
        rectangleButton.addActionListener(this);
        buttonPanel.add(rectangleButton);

        // 创建多边形按钮
        polygonButton = new JButton('多边形');
        polygonButton.addActionListener(this);
        buttonPanel.add(polygonButton);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() instanceof JMenuItem) { // 菜单项被点击
            JMenuItem menuItem = (JMenuItem) e.getSource();
            String shape = menuItem.getText();

            if (shape.equals('直线')) {
                shapeType = 0;
            } else if (shape.equals('椭圆')) {
                shapeType = 1;
            } else if (shape.equals('矩形')) {
                shapeType = 2;
            } else if (shape.equals('多边形')) {
                shapeType = 3;
            }
        } else if (e.getSource() instanceof JButton) { // 按钮被点击
            JButton button = (JButton) e.getSource();
            String shape = button.getText();

            if (shape.equals('直线')) {
                shapeType = 0;
            } else if (shape.equals('椭圆')) {
                shapeType = 1;
            } else if (shape.equals('矩形')) {
                shapeType = 2;
            } else if (shape.equals('多边形')) {
                shapeType = 3;
            }
        }

        drawingPanel.repaint();
    }

    public void paint(Graphics g) {
        super.paint(g);

        if (shapeType == 0) {
            g.drawLine(50, 50, 200, 200);
        } else if (shapeType == 1) {
            g.drawOval(50, 50, 150, 100);
        } else if (shapeType == 2) {
            g.drawRect(50, 50, 150, 100);
        } else if (shapeType == 3) {
            int[] xPoints = {100, 150, 200, 150};
            int[] yPoints = {100, 50, 100, 150};
            g.drawPolygon(xPoints, yPoints, 4);
        }
    }

    public static void main(String[] args) {
        DrawingApp app = new DrawingApp();
        app.setVisible(true);
    }
}

这段代码创建了一个简单的绘图应用程序,允许用户绘制四种形状:直线、椭圆、矩形和多边形。用户可以通过点击菜单项或按钮来选择要绘制的形状。

以下是代码的主要部分:

  • 导入语句: 导入必要的 Java Swing 和 AWT 类。
  • DrawingApp 类: 主应用程序类,继承自 JFrame 并实现 ActionListener 接口。
  • 构造函数: 初始化应用程序窗口,创建菜单栏、菜单项、绘图面板和按钮面板。
  • actionPerformed 方法: 处理菜单项和按钮的点击事件,更新 shapeType 变量并重新绘制绘图面板。
  • paint 方法: 根据 shapeType 变量的值绘制选定的形状。
  • main 方法: 创建 DrawingApp 对象并使其可见。

这段代码展示了如何使用 Java Swing 创建一个简单的图形界面应用程序。它可以作为创建更复杂绘图应用程序的基础。

Java Swing 绘图应用程序 - 创建可交互的图形界面

原文地址: https://www.cveoy.top/t/topic/fOxa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录