用java 写出 用菜单和按钮来控制绘图 功能要求:实现简单绘图功能,具体要求:画直线,画实心椭圆、画实心矩形、画多边形图形的位置和大小可在程序中设定 界面要求:用图形界面实现。
时间: 2024-04-17 16:27:56 浏览: 32
以下是使用Java Swing库编写的示例代码,实现了使用菜单和按钮来控制绘图的功能,包括画直线、实心椭圆、实心矩形和多边形。图形的位置和大小可以在程序中进行设定。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DrawingApp extends JFrame {
private JButton lineButton, ellipseButton, rectangleButton, polygonButton;
private JPanel canvasPanel;
private int shapeType; // 用于记录用户选择的图形类型
public DrawingApp() {
setTitle("绘图应用");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 500);
lineButton = new JButton("画直线");
ellipseButton = new JButton("画椭圆");
rectangleButton = new JButton("画矩形");
polygonButton = new JButton("画多边形");
canvasPanel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (shapeType == 1) {
// 画直线
g.drawLine(50, 50, 200, 200);
} else if (shapeType == 2) {
// 画实心椭圆
g.fillOval(100, 100, 200, 100);
} else if (shapeType == 3) {
// 画实心矩形
g.fillRect(150, 150, 150, 100);
} else if (shapeType == 4) {
// 画多边形
int[] xPoints = {100, 200, 300, 400};
int[] yPoints = {300, 200, 300, 200};
g.fillPolygon(xPoints, yPoints, 4);
}
}
};
lineButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
shapeType = 1; // 设置图形类型为直线
canvasPanel.repaint(); // 重绘画布
}
});
ellipseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
shapeType = 2; // 设置图形类型为实心椭圆
canvasPanel.repaint(); // 重绘画布
}
});
rectangleButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
shapeType = 3; // 设置图形类型为实心矩形
canvasPanel.repaint(); // 重绘画布
}
});
polygonButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
shapeType = 4; // 设置图形类型为多边形
canvasPanel.repaint(); // 重绘画布
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.add(lineButton);
buttonPanel.add(ellipseButton);
buttonPanel.add(rectangleButton);
buttonPanel.add(polygonButton);
setLayout(new BorderLayout());
add(buttonPanel, BorderLayout.NORTH);
add(canvasPanel, BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new DrawingApp();
}
});
}
}
```
在上述代码中,我们创建了一个继承自JFrame的DrawingApp类,用于展示图形界面。在构造函数中,我们设置了窗口的标题、大小和关闭操作。然后,我们创建了按钮和画布的JPanel,并将它们添加到窗口的适当位置。为每个按钮添加了ActionListener,以便在用户点击按钮时设置相应的图形类型,并重绘画布。在画布的paintComponent方法中,根据用户选择的图形类型进行相应的绘图操作。
请注意,上述代码中的绘图部分仅提供了简单的示例,您可以根据实际需求进行修改和扩展。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)