简单的java程序设计,要求有结果图

2022-07-27 社会 51阅读
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestMain {
public static void main(String[] args) {
JFrame frame = new JFrame("计算平面图形的面积");
BorderLayout borderLayout = new BorderLayout(20, 20);
JPanel topPanel = new JPanel();
frame.getContentPane().setLayout(borderLayout);
frame.add(topPanel, BorderLayout.NORTH);
JRadioButton ellipseButton = new JRadioButton("椭圆");
ellipseButton.setSelected(true);
JRadioButton rectangleButton = new JRadioButton("长方形");
topPanel.add(ellipseButton);
topPanel.add(rectangleButton);
ButtonGroup group = new ButtonGroup();
group.add(ellipseButton);
group.add(rectangleButton);
Box h1 = Box.createHorizontalBox();
JLabel label1 = new JLabel("请输入长:");
JTextField textField1 = new JTextField(26);
JLabel label2 = new JLabel("请输入宽:");
JTextField textField2 = new JTextField(26);
h1.add(label1);
h1.add(textField1);
Box h2 = Box.createHorizontalBox();
h2.add(label2);
h2.add(textField2);
Box vBox = Box.createVerticalBox();
vBox.add(h1);
vBox.add(h2);
JButton calcButton = new JButton("计算");
vBox.add(Box.createVerticalStrut(10));
vBox.add(calcButton);
frame.add(vBox, BorderLayout.CENTER);
JPanel bottom = new JPanel();
String descption = "该图形的面积为:";
JLabel bottomLable = new JLabel(descption);
bottomLable.setBorder(BorderFactory.createLineBorder(Color.red));
bottom.add(bottomLable);
frame.add(bottom, BorderLayout.SOUTH);
calcButton.addActionListener(new ActionListener() {
PlaneGrphics shape;
@Override
public void actionPerformed(ActionEvent e) {
String lengthString = textField1.getText();
String widthString = textField2.getText();
double length = lengthString.isEmpty()?0 : Double.parseDouble(lengthString);
double width = widthString.isEmpty()? 0: Double.parseDouble(widthString);
if (ellipseButton.isSelected()) {
if (length == width) {
shape = new Ellipse(length);
} else {
shape = new Ellipse(length,width);
}
} else if (rectangleButton.isSelected()) {
if (length == width) {
shape = new Rectangle(length);
} else {
shape = new Rectangle(length,width);
}
} else {
}
String area = descption + Math.round(shape.area()*100)/100.0 + ",该图形为:" + shape.getShape();
bottomLable.setText(area);
}
});
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(3);
}
}
abstract class PlaneGrphics {
private String shape;
public abstract double area();
public PlaneGrphics(String Shape) {
this.shape = Shape;
}
public PlaneGrphics() {
this.shape = "未知";
}
public String getShape() {
return shape;
}
}
class Rectangle extends PlaneGrphics{
private double length,width;
public Rectangle(double length,double width) {
super("长方形");
this.length = length;
this.width = width;
}
public Rectangle(double width) {
super("正方形");
this.length = width;
this.width = width;
}
@Override
public double area() {
return length * width;
}
}
class Ellipse extends PlaneGrphics{
private double radius_a,radius_b;
public Ellipse(double radius_a, double radius_b) {
super("椭圆");
this.radius_a = radius_a;
this.radius_b = radius_b;
}
public Ellipse(double radius_a) {
super("圆");
this.radius_a = radius_a;
this.radius_b = radius_a;
}
@Override
public double area() {
return Math.PI * radius_a * radius_b;
}
}

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com