Java Swing 绘图应用程序 - 创建可交互的图形界面
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 创建一个简单的图形界面应用程序。它可以作为创建更复杂绘图应用程序的基础。
原文地址: https://www.cveoy.top/t/topic/fOxa 著作权归作者所有。请勿转载和采集!