简单的写一下,为了简单坐标都使用了int类型。
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都网站制作、宣化网络推广、微信平台小程序开发、宣化网络营销、宣化企业策划、宣化品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供宣化建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
public class Point {
public int x;
public int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public static void show(Point p){
System.out.println("x: " + p.x + " y: " + p.y);
}
public static Point getMiddle(Point p1, Point p2){
int x = (p1.x + p2.x)/2;
int y = (p1.y + p2.y)/2;
Point p = new Point(x, y);
return p;
}
public static void main(String[] args) {
Point p1 = new Point(2, 4);
Point p2 = new Point(4, 4);
Point p = Point.getMiddle(p1, p2);
Point.show(p);
}
}
class Point{
protected double x;
protected double y;
public Point(double x,double y){
this.x=x;
this.y=y;
}
}
class Circle extends Point{
protected double r;
public Circle(double x,double y,double r){
super(x,y);
this.r=r;
}
}
class Cylinder extends Circle{
protected double h;
public Cylinder(double x,double y,double r,double h){
super(x,y,r);
this.h=h;}
public double mm(){
return Math.PI*r*r*h;
}
}
public class Test{
public static void main(String[] args){
Cylinder cy=new Cylinder(1,2,3,4);
System.out.println(cy.mm());
}
}
做这些不知道能不能符合你的要求,不符合的话在说
这个简单
可以调用方法drawline(int x1, int y1, int x2, int y2)
其中(x1, y1), (x2, y2)分别为直线起点和终点的坐标
特意给你写了个小例子,希望能帮到你
***************************************
import javax.swing.*;
import java.awt.*;
public class DrawLine extends JPanel {
public static void main(String[] args) {
JFrame frame = new JFrame("DrawLine");
frame.getContentPane().add(new DrawLine());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(50, 50, 200, 250);
}
}
****************************
将程序复制到记事本中并改名为DrawLine.java(注意大小写)
然后在命令行中用 CD+文件夹 使命令范围到DrawLine.java的文件夹中
然后执行命令javac DrawLine.java
再执行命令java DrawLine
你会看到结果
定义一个类继承JPanel类,重写 JPanel 的 paint 方法,使用 Graphics 绘制线段,如下代码:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MyPanel extends JPanel {
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
for (int i = 0; i 10; i++) {
g.drawLine(10, 10 + i * 20, this.getWidth() - 10, 10 + i * 20);
}
for (int i = 0; i 10; i++) {
g.drawLine(10 + i * 20, 10, 10 + i * 20, this.getHeight() - 10);
}
}
}
public class App extends JFrame {
public App() {
this.setSize(400, 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
this.add(panel, BorderLayout.CENTER);
}
public static void main(String[] args) {
new App().setVisible(true);
}
}
运行结果:
Class.forName("Rect");//加载Rect.class
Rect rect = (Rect)cs.newInstance();//调用Rect不带参数的构造方法
//上面这两句话的作用相当于Rect rect = new Rect();
这些内容是在Java反射中的内容,看到上面的解释,也许会奇怪,既然上面这两句相当于Rect rect = new Rect();为什么还有上面这种形式,不直接替成下面这种形式,还更简单吗。
问题在于,下面这种写法就把整个代码就写死了,上面这种形式我们会有更大的灵活性,我们可以通过修改forName()的参数,来创建不同的实例,这就把new XXX的形式给变的灵活了。反射大量应用于框架中,就是为了能够获取更大的灵活性。
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class TestDrawArc extends JFrame{
MyCanvas1 cnv;
public TestDrawArc(){
super("半圆");
cnv = new MyCanvas1();
this.add(cnv);
this.setSize(500, 500);
this.setVisible(true);
}
public static void main(String[] args) {
new TestDrawArc();
}
}
class MyCanvas1 extends Canvas{
public MyCanvas1(){
super();
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.red);
g.drawArc(50, 50, 300, 300, 0, 180);
}
}
drawArc有6个参数:
前面两个圆的外切矩形左上角的坐标点,中间两个是外切矩形的宽和高,倒数第二个是弧的起始角度,最后一个是弧的跨越角度。