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 绘图应用程序,使用菜单和按钮选择要绘制的图形(直线、椭圆、矩形、多边形),并通过图形绘制面板实时显示绘制结果。 // 代码首先创建了一个 JFrame 窗口,并添加了一个菜单栏和按钮面板。 // 在菜单栏中,创建了图形菜单,包含直线、椭圆、矩形和多边形四个菜单项。 // 在按钮面板中,创建了四个按钮,对应于菜单项中的图形。 // 用户可以通过点击菜单项或按钮来选择要绘制的图形,程序会将选择的图形类型保存到 shapeType 变量中。 // 在 paint 方法中,根据 shapeType 的值绘制相应的图形。 // 最后,程序将 JFrame 窗口设置为可见,用户即可开始绘制。 // 该程序简单易懂,可以帮助用户学习 Java Swing 的基本使用方法和绘图原理。
原文地址: https://www.cveoy.top/t/topic/fOw8 著作权归作者所有。请勿转载和采集!