写出这个Panel系统,包括圆、长方形和直线,根据用户输入特定形状类型,选择相应的形状画图模块,如果都没有,则显示错误信息
时间: 2024-01-30 15:01:42 浏览: 56
下面是一个简单的Panel系统示例,包括圆、长方形和直线三种形状:
```java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PanelSystem extends JPanel {
private Shape shape;
public PanelSystem() {
// 默认显示圆形
shape = new Circle();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.WHITE);
// 绘制当前选择的图形
shape.draw(g);
}
// 根据用户输入选择对应的图形
public void setShape(String shapeType) {
switch (shapeType) {
case "circle":
shape = new Circle();
break;
case "rectangle":
shape = new Rectangle();
break;
case "line":
shape = new Line();
break;
default:
System.out.println("Unsupported shape type!");
break;
}
repaint();
}
// 圆形类
class Circle implements Shape {
@Override
public void draw(Graphics g) {
g.setColor(Color.RED);
g.fillOval(50, 50, 100, 100);
}
}
// 长方形类
class Rectangle implements Shape {
@Override
public void draw(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(50, 50, 100, 50);
}
}
// 直线类
class Line implements Shape {
@Override
public void draw(Graphics g) {
g.setColor(Color.GREEN);
g.drawLine(50, 50, 150, 100);
}
}
// 图形接口
interface Shape {
void draw(Graphics g);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Panel System");
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PanelSystem panel = new PanelSystem();
frame.add(panel);
// 用户输入选择的图形类型
String shapeType = "rectangle";
panel.setShape(shapeType);
frame.setVisible(true);
}
}
```
在上面的示例中,我们通过继承JPanel类来创建一个自定义面板,然后在面板中绘制图形。用户可以通过调用`setShape()`方法来选择需要绘制的图形类型,如果选择的类型不支持,则输出错误信息。同时,我们使用了接口和内部类来实现图形的抽象和封装,使代码更加清晰和易于扩展。
阅读全文