Untitled
unknown
plain_text
a year ago
21 kB
4
Indexable
package ics2606_1csa_activity9_galvez.java; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class ICS2606_1CSA_Activity9_GalvezJava { public static void main(String[] args) { new ShapeCalculatorGUI(); } } class ShapeCalculatorGUI extends JFrame implements ActionListener { private JLabel titleLabel; private JLabel circleLabel; private JLabel rectangleLabel; private JLabel rightTriangleLabel; private JLabel squareLabel; private JLabel triangleLabel; private JLabel radiusLabel; private JLabel widthLabel; private JLabel baseLabel; private JLabel sideLabel; private JLabel heightLabel; private JLabel circlePerimeterLabel; private JLabel circleAreaLabel; private JLabel rectanglePerimeterLabel; private JLabel rectangleAreaLabel; private JLabel rightTrianglePerimeterLabel; private JLabel rightTriangleAreaLabel; private JLabel squarePerimeterLabel; private JLabel squareAreaLabel; private JLabel trianglePerimeterLabel; private JLabel triangleAreaLabel; private JTextField radiusTextField; private JTextField widthTextField; private JTextField baseTextField; private JTextField sideTextField; private JTextField heightTextField; private JTextField circlePerimeterTextField; private JTextField circleAreaTextField; private JTextField rectanglePerimeterTextField; private JTextField rectangleAreaTextField; private JTextField rightTrianglePerimeterTextField; private JTextField rightTriangleAreaTextField; private JTextField squarePerimeterTextField; private JTextField squareAreaTextField; private JTextField trianglePerimeterTextField; private JTextField triangleAreaTextField; private JTextField maxPerimeterTextField; private JTextField maxAreaTextField; private JButton computeButton; public ShapeCalculatorGUI() { super("Shape Calculator"); setLayout(null); titleLabel = new JLabel("Shape Calculator by Luis the Anthony Davis"); titleLabel.setBounds(200, 10, 200000, 30); add(titleLabel); circleLabel = new JLabel("Circle"); circleLabel.setBounds(20, 50, 100, 30); add(circleLabel); radiusLabel = new JLabel("Radius:"); radiusLabel.setBounds(20, 90, 100, 30); add(radiusLabel); radiusTextField = new JTextField(); radiusTextField.setBounds(120, 90, 100, 30); add(radiusTextField); circlePerimeterLabel = new JLabel("Perimeter:"); circlePerimeterLabel.setBounds(20, 130, 100, 30); add(circlePerimeterLabel); circlePerimeterTextField = new JTextField(); circlePerimeterTextField.setBounds(120, 130, 100, 30); circlePerimeterTextField.setEditable(false); add(circlePerimeterTextField); circleAreaLabel = new JLabel("Area:"); circleAreaLabel.setBounds(20, 170, 100, 30); add(circleAreaLabel); circleAreaTextField = new JTextField(); circleAreaTextField.setBounds(120, 170, 100, 30); circleAreaTextField.setEditable(false); add(circleAreaTextField); rectangleLabel = new JLabel("Rectangle"); rectangleLabel.setBounds(20, 220, 100, 30); add(rectangleLabel); widthLabel = new JLabel("Width:"); widthLabel.setBounds(20, 260, 100, 30); add(widthLabel); widthTextField = new JTextField(); widthTextField.setBounds(120, 260, 100, 30); add(widthTextField); baseLabel = new JLabel("Length:"); baseLabel.setBounds(20, 300, 100, 30); add(baseLabel); baseTextField = new JTextField(); baseTextField.setBounds(120, 300, 100, 30); add(baseTextField); rectanglePerimeterLabel = new JLabel("Perimeter:"); rectanglePerimeterLabel.setBounds(20, 340, 100, 30); add(rectanglePerimeterLabel); rectanglePerimeterTextField = new JTextField(); rectanglePerimeterTextField.setBounds(120, 340, 100, 30); rectanglePerimeterTextField.setEditable(false); add(rectanglePerimeterTextField); rectangleAreaLabel = new JLabel("Area:"); rectangleAreaLabel.setBounds(20, 380, 100, 30); add(rectangleAreaLabel); rectangleAreaTextField = new JTextField(); rectangleAreaTextField.setBounds(120, 380, 100, 30); rectangleAreaTextField.setEditable(false); add(rectangleAreaTextField); rightTriangleLabel = new JLabel("Right Triangle"); rightTriangleLabel.setBounds(250, 50, 120, 30); add(rightTriangleLabel); baseLabel = new JLabel("Base:"); baseLabel.setBounds(250, 90, 100, 30); add(baseLabel); baseTextField = new JTextField(); baseTextField.setBounds(350, 90, 100, 30); add(baseTextField); heightLabel = new JLabel("Height:"); heightLabel.setBounds(250, 130, 100, 30); add(heightLabel); heightTextField = new JTextField(); heightTextField.setBounds(350, 130, 100, 30); add(heightTextField); rightTrianglePerimeterLabel = new JLabel("Perimeter:"); rightTrianglePerimeterLabel.setBounds(250, 170, 100, 30); add(rightTrianglePerimeterLabel); rightTrianglePerimeterTextField = new JTextField(); rightTrianglePerimeterTextField.setBounds(350, 170, 100, 30); rightTrianglePerimeterTextField.setEditable(false); add(rightTrianglePerimeterTextField); rightTriangleAreaLabel = new JLabel("Area:"); rightTriangleAreaLabel.setBounds(250, 210, 100, 30); add(rightTriangleAreaLabel); rightTriangleAreaTextField = new JTextField(); rightTriangleAreaTextField.setBounds(350, 210, 100, 30); rightTriangleAreaTextField.setEditable(false); add(rightTriangleAreaTextField); squareLabel = new JLabel("Square"); squareLabel.setBounds(250, 250, 100, 30); add(squareLabel); sideLabel = new JLabel("Side:"); sideLabel.setBounds(250, 290, 100, 30); add(sideLabel); sideTextField = new JTextField(); sideTextField.setBounds(350, 290, 100, 30); add(sideTextField); squarePerimeterLabel = new JLabel("Perimeter:"); squarePerimeterLabel.setBounds(250, 330, 100, 30); add(squarePerimeterLabel); squarePerimeterTextField = new JTextField(); squarePerimeterTextField.setBounds(350, 330, 100, 30); squarePerimeterTextField.setEditable(false); add(squarePerimeterTextField); squareAreaLabel = new JLabel("Area:"); squareAreaLabel.setBounds(250, 370, 100, 30); add(squareAreaLabel); squareAreaTextField = new JTextField(); squareAreaTextField.setBounds(350, 370, 100, 30); squareAreaTextField.setEditable(false); add(squareAreaTextField); triangleLabel = new JLabel("Triangle"); triangleLabel.setBounds(250, 410, 100, 30); add(triangleLabel); sideLabel = new JLabel("Side:"); sideLabel.setBounds(250, 450, 100, 30); add(sideLabel); sideTextField = new JTextField(); sideTextField.setBounds(350, 450, 100, 30); add(sideTextField); trianglePerimeterLabel = new JLabel("Perimeter:"); trianglePerimeterLabel.setBounds(250, 490, 100, 30); add(trianglePerimeterLabel); trianglePerimeterTextField = new JTextField(); trianglePerimeterTextField.setBounds(350, 490, 100, 30); trianglePerimeterTextField.setEditable(false); add(trianglePerimeterTextField); triangleAreaLabel = new JLabel("Area:"); triangleAreaLabel.setBounds(250, 530, 100, 30); add(triangleAreaLabel); triangleAreaTextField = new JTextField(); triangleAreaTextField.setBounds(350, 530, 100, 30); triangleAreaTextField.setEditable(false); add(triangleAreaTextField); maxPerimeterTextField = new JTextField(); maxPerimeterTextField.setBounds(250, 580, 200, 30); maxPerimeterTextField.setEditable(false); add(maxPerimeterTextField); maxAreaTextField = new JTextField(); maxAreaTextField.setBounds(250, 620, 200, 30); maxAreaTextField.setEditable(false); add(maxAreaTextField); computeButton = new JButton("Compute"); computeButton.setBounds(200, 670, 100, 30); computeButton.addActionListener(this); add(computeButton); setSize(500, 750); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { try { double radius = Double.parseDouble(radiusTextField.getText()); double width = Double.parseDouble(widthTextField.getText()); double lengthRectangle = Double.parseDouble(baseTextField.getText()); double sideSquare = Double.parseDouble(sideTextField.getText()); double heightRightTriangle = Double.parseDouble(heightTextField.getText()); double baseTriangle = Double.parseDouble(baseTextField.getText()); double heightTriangle = Double.parseDouble(heightTextField.getText()); // Creating instances of each shape with provided parameters Circle circle = new Circle(radius); Rectangle rectangle = new Rectangle(lengthRectangle, width); RightTriangle rightTriangle = new RightTriangle(baseTriangle, heightRightTriangle); Square square = new Square(sideSquare); Triangle triangle = new Triangle(baseTriangle, heightTriangle); // Setting perimeter and area for each shape circlePerimeterTextField.setText(String.format("%.2f", circle.getPerimeter())); circleAreaTextField.setText(String.format("%.2f", circle.getArea())); rectanglePerimeterTextField.setText(String.format("%.2f", rectangle.getPerimeter())); rectangleAreaTextField.setText(String.format("%.2f", rectangle.getArea())); rightTrianglePerimeterTextField.setText(String.format("%.2f", rightTriangle.getPerimeter())); rightTriangleAreaTextField.setText(String.format("%.2f", rightTriangle.getArea())); squarePerimeterTextField.setText(String.format("%.2f", square.getPerimeter())); squareAreaTextField.setText(String.format("%.2f", square.getArea())); trianglePerimeterTextField.setText(String.format("%.2f", triangle.getPerimeter())); triangleAreaTextField.setText(String.format("%.2f", triangle.getArea())); // Calculating and displaying the maximum perimeter and area double maxPerimeter = Math.max(Math.max(Math.max(circle.getPerimeter(), rectangle.getPerimeter()), Math.max(rightTriangle.getPerimeter(), square.getPerimeter())), triangle.getPerimeter()); maxPerimeterTextField.setText(String.format("%.2f", maxPerimeter)); double maxArea = Math.max(Math.max(Math.max(circle.getArea(), rectangle.getArea()), Math.max(rightTriangle.getArea(), square.getArea())), triangle.getArea()); maxAreaTextField.setText(String.format("%.2f", maxArea)); } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(this, "Please enter valid numerical values."); } } } interface Shape { double getPerimeter(); double getArea(); void setPerimeter(double perimeter); void setArea(double area); } class Circle implements Shape { private double radius; private double perimeter; private double area; public Circle() { this.radius = 0.0; this.perimeter = 0.0; this.area = 0.0; } public Circle(double radius) { if (radius < 0) { throw new IllegalArgumentException("Radius cannot be negative."); } this.radius = radius; this.perimeter = computePerimeter(); this.area = computeArea(); } @Override public double getPerimeter() { return perimeter; } @Override public double getArea() { return area; } @Override public void setPerimeter(double perimeter) { this.perimeter = perimeter; } @Override public void setArea(double area) { this.area = area; } public double computePerimeter() { return 2 * Math.PI * radius; } public double computeArea() { return Math.PI * radius * radius; } public void setRadius(double radius) { if (radius < 0) { throw new IllegalArgumentException("Radius cannot be negative."); } this.radius = radius; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getRadius() { return radius; } @Override public String toString() { return String.format("Shape: Circle\nRadius = %.2f\nPerimeter = %.2f\nArea = %.2f\n", radius, perimeter, area); } } class Rectangle implements Shape { private double length; private double width; private double perimeter; private double area; public Rectangle() { this.length = 0.0; this.width = 0.0; this.perimeter = 0.0; this.area = 0.0; } public Rectangle(double width, double length) { if (length < 0 || width < 0) { throw new IllegalArgumentException("Length and width cannot be negative."); } this.length = length; this.width = width; this.perimeter = computePerimeter(); this.area = computeArea(); } @Override public double getPerimeter() { return perimeter; } @Override public double getArea() { return area; } @Override public void setPerimeter(double perimeter) { this.perimeter = perimeter; } @Override public void setArea(double area) { this.area = area; } public double computePerimeter() { return 2 * (length + width); } public double computeArea() { return length * width; } public void setLength(double length) { if (length < 0) { throw new IllegalArgumentException("Length cannot be negative."); } this.length = length; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getLength() { return length; } public void setWidth(double width) { if (width < 0) { throw new IllegalArgumentException("Width cannot be negative."); } this.width = width; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getWidth() { return width; } @Override public String toString() { return String.format("Shape: Rectangle\nLength = %.2f\nWidth = %.2f\nPerimeter = %.2f\nArea = %.2f\n", length, width, perimeter, area); } } class RightTriangle implements Shape { private double base; private double height; private double perimeter; private double area; public RightTriangle() { this.base = 0.0; this.height = 0.0; this.perimeter = 0.0; this.area = 0.0; } public RightTriangle(double base, double height) { if (base < 0 || height < 0) { throw new IllegalArgumentException("Base and height cannot be negative."); } this.base = base; this.height = height; this.perimeter = computePerimeter(); this.area = computeArea(); } @Override public double getPerimeter() { return perimeter; } @Override public double getArea() { return area; } @Override public void setPerimeter(double perimeter) { this.perimeter = perimeter; } @Override public void setArea(double area) { this.area = area; } public double computePerimeter() { return base + height + Math.sqrt(base * base + height * height); } public double computeArea() { return 0.5 * base * height; } public void setBase(double base) { if (base < 0) { throw new IllegalArgumentException("Base cannot be negative."); } this.base = base; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getBase() { return base; } public void setHeight(double height) { if (height < 0) { throw new IllegalArgumentException("Height cannot be negative."); } this.height = height; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getHeight() { return height; } @Override public String toString() { return String.format("Shape: Right Triangle\nBase = %.2f\nHeight = %.2f\nPerimeter = %.2f\nArea = %.2f\n", base, height, perimeter, area); } } class Square implements Shape { private double side; private double perimeter; private double area; public Square() { this.side = 0.0; this.perimeter = 0.0; this.area = 0.0; } public Square(double side) { if (side < 0) { throw new IllegalArgumentException("Side cannot be negative."); } this.side = side; this.perimeter = computePerimeter(); this.area = computeArea(); } @Override public double getPerimeter() { return perimeter; } @Override public double getArea() { return area; } @Override public void setPerimeter(double perimeter) { this.perimeter = perimeter; } @Override public void setArea(double area) { this.area = area; } public double computePerimeter() { return 4 * side; } public double computeArea() { return side * side; } public void setSide(double side) { if (side < 0) { throw new IllegalArgumentException("Side cannot be negative."); } this.side = side; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getSide() { return side; } @Override public String toString() { return String.format("Shape: Square\nSide = %.2f\nPerimeter = %.2f\nArea = %.2f\n", side, perimeter, area); } } class Triangle implements Shape { private double base; private double height; private double perimeter; private double area; public Triangle() { this.base = 0.0; this.height = 0.0; this.perimeter = 0.0; this.area = 0.0; } public Triangle(double base, double height) { if (base < 0 || height < 0) { throw new IllegalArgumentException("Base and height cannot be negative."); } this.base = base; this.height = height; this.perimeter = computePerimeter(); this.area = computeArea(); } @Override public double getPerimeter() { return perimeter; } @Override public double getArea() { return area; } @Override public void setPerimeter(double perimeter) { this.perimeter = perimeter; } @Override public void setArea(double area) { this.area = area; } public double computePerimeter() { // For simplicity, assuming an equilateral triangle return 3 * base; } public double computeArea() { return 0.5 * base * height; } public void setBase(double base) { if (base < 0) { throw new IllegalArgumentException("Base cannot be negative."); } this.base = base; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getBase() { return base; } public void setHeight(double height) { if (height < 0) { throw new IllegalArgumentException("Height cannot be negative."); } this.height = height; this.perimeter = computePerimeter(); this.area = computeArea(); } public double getHeight() { return height; } @Override public String toString() { return String.format("Shape: Triangle\nBase = %.2f\nHeight = %.2f\nPerimeter = %.2f\nArea = %.2f\n", base, height, perimeter, area); } }
Editor is loading...
Leave a Comment