public abstract class Shape {
public static final double PI=3.14;
public abstract double getArea();
public abstract double getPerimeter();
}public class Circle extends Shape{
double r;
public Circle(double r){
this.r=r;
}
@Override
public double getArea(){
return Shape.PI*r*r;
}
@Override
public double getPerimeter(){
return Shape.PI*r*2;
}
}public class Rectangle extends Shape {
double m, n;
public Rectangle(double m, double n) {
this.m = m;
this.n = n;
}
@Override
public double getArea() {
return m * n;
}
@Override
public double getPerimeter() {
return 2 * (m + n);
}
}public class Triangle extends Shape {
double a, b, c;
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
double p = (a + b + c) / 2;
if ((a + b) > c && (a + c) > b && (b + c) > c) {
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
} else {
System.out.println("wrong values");
return -1;
}
}
@Override
public double getPerimeter() {
if ((a + b) > c && (a + c) > b && (b + c) > c) {
return a + b + c;
} else {
System.out.println("wrong values");
return -1;
}
}
}import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("choose the shape which is the one you want calculate it's area and Perimeter:");
System.out.println("1.Circle\t2.Triangle\t3.Rectangle");
try {
int choice = sc.nextInt();
switch (choice) {
case 1:
System.out.println("input r:");
try {
double r = sc.nextDouble();
Shape s = new Circle(r);
System.out.println("the area of the circle is :" + s.getArea()
+ "\nthe perimeter of the circle is :" + s.getPerimeter());
} catch (Exception e) {
System.out.println("wrong");
}
break;
case 2:
System.out.println("input a,b,c:");
double a, b, c;
try {
a = sc.nextDouble();
b = sc.nextDouble();
c = sc.nextDouble();
Shape s = new Triangle(a, b, c);
System.out.println("the area of the circle is :" + s.getArea()
+ "\nthe perimeter of the circle is :" + s.getPerimeter());
} catch (Exception e) {
System.out.println("wrong");
}
break;
case 3:
System.out.println("input m,n:");
double m, n;
try {
m = sc.nextDouble();
n = sc.nextDouble();
Shape s = new Rectangle(m, n);
System.out.println("the area of the circle is :" + s.getArea()
+ "\nthe perimeter of the circle is :" + s.getPerimeter());
} catch (Exception e) {
System.out.println("wrong");
}
break;
}
} catch (Exception e) {
System.out.println("please choose a correct number");
}
sc.close();
}
}怎么变成java组件和事件处理的图形化界面。
package com.crazy.jfreechart;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
@author Winter Lau
*/
public class BarChartDemo {
public static void main(String[] args) throws IOException{
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是 false)
false, // 是否生成工具
false // 是否生成 URL 链接
);
//中文乱码
CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
CategoryAxis domainAxis = categoryplot.getDomainAxis();
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体", Font.PLAIN, 20));
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\BarChart.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f,chart,800,600,null);
} finally {
System.out.println("图片生成成功");
try {
fos_jpg.close();
} catch (Exception e) {
}
}
}
/**