import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Demo extends JFrame
{
MyPanel pnl = null;
public Demo()
{
super("David Triangle Demo");
setSize(500,500);
pnl = new MyPanel();
getContentPane().add(pnl,BorderLayout.CENTER);
}
public static void main(String[] arg)
{
Demo frame = new Demo();
frame.show();
frame.setVisible(true);
//关闭窗口时清空内存
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
class MyPanel extends JPanel
{
int x1 = -1;
int y1 = -1;
int x2 = -1;
int y2 = -1;
public void paintComponent(Graphics comp)
{
Graphics2D comp2D = (Graphics2D)comp;
comp2D.setColor(Color.WHITE);
comp2D.fillRect(0, 0, 500, 500);
comp2D.setColor(Color.BLACK);
comp2D.drawRect(-1, -1, 501, 501);
//去除锯齿
comp2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
comp2D.drawString("PD", 245, 75);
Line2D.Float line1 = new Line2D.Float(250.0f,80.0f,400.0f,350.0f);
Line2D.Float line2 = new Line2D.Float(250.0f,80.0f,100.0f,350.0f);
Line2D.Float line3 = new Line2D.Float(100.0f,350.0f,400.0f,350.0f);
comp2D.draw(line1);
comp2D.draw(line2);
comp2D.draw(line3);
//画刻度
Line2D.Float Graduation1_1 = new Line2D.Float(115.0f,324.0f,125.0f,324.0f);
Line2D.Float Graduation1_2 = new Line2D.Float(129.0f,297.0f,139.0f,297.0f);
Line2D.Float Graduation1_3 = new Line2D.Float(145.0f,270.0f,155.0f,270.0f);
Line2D.Float Graduation1_4 = new Line2D.Float(158.0f,243.0f,168.0f,243.0f);
Line2D.Float Graduation1_5 = new Line2D.Float(175.0f,216.0f,185.0f,216.0f);
Line2D.Float Graduation1_6 = new Line2D.Float(191.0f,189.0f,201.0f,189.0f);
Line2D.Float Graduation1_7 = new Line2D.Float(207.0f,162.0f,217.0f,162.0f);
Line2D.Float Graduation1_8 = new Line2D.Float(220.0f,135.0f,230.0f,135.0f);
Line2D.Float Graduation1_9 = new Line2D.Float(235.0f,110.0f,245.0f,110.0f);
Line2D.Float Graduation2_1 = new Line2D.Float(130.0f,350.0f,125.0f,340.0f);
Line2D.Float Graduation2_2 = new Line2D.Float(160.0f,350.0f,155.0f,340.0f);
Line2D.Float Graduation2_3 = new Line2D.Float(190.0f,350.0f,185.0f,340.0f);
Line2D.Float Graduation2_4 = new Line2D.Float(220.0f,350.0f,215.0f,340.0f);
Line2D.Float Graduation2_5 = new Line2D.Float(250.0f,350.0f,245.0f,340.0f);
Line2D.Float Graduation2_6 = new Line2D.Float(280.0f,350.0f,275.0f,340.0f);
Line2D.Float Graduation2_7 = new Line2D.Float(310.0f,350.0f,305.0f,340.0f);
Line2D.Float Graduation2_8 = new Line2D.Float(340.0f,350.0f,335.0f,340.0f);
Line2D.Float Graduation2_9 = new Line2D.Float(370.0f,350.0f,365.0f,340.0f);
Line2D.Float Graduation3_1 = new Line2D.Float(385.0f,324.0f,380.0f,334.0f);
Line2D.Float Graduation3_2 = new Line2D.Float(370.0f,297.0f,365.0f,307.0f);
Line2D.Float Graduation3_3 = new Line2D.Float(355.0f,270.0f,350.0f,280.0f);
Line2D.Float Graduation3_4 = new Line2D.Float(340.0f,243.0f,335.0f,253.0f);
Line2D.Float Graduation3_5 = new Line2D.Float(325.0f,216.0f,320.0f,226.0f);
Line2D.Float Graduation3_6 = new Line2D.Float(310.0f,189.0f,305.0f,199.0f);
Line2D.Float Graduation3_7 = new Line2D.Float(295.0f,162.0f,290.0f,172.0f);
Line2D.Float Graduation3_8 = new Line2D.Float(280.0f,135.0f,275.0f,145.0f);
Line2D.Float Graduation3_9 = new Line2D.Float(265.0f,108.0f,260.0f,118.0f);
comp2D.draw(Graduation1_1);
comp2D.draw(Graduation1_2);
comp2D.draw(Graduation1_3);
comp2D.draw(Graduation1_4);
comp2D.draw(Graduation1_5);
comp2D.draw(Graduation1_6);
comp2D.draw(Graduation1_7);
comp2D.draw(Graduation1_8);
comp2D.draw(Graduation1_9);
comp2D.draw(Graduation2_1);
comp2D.draw(Graduation2_2);
comp2D.draw(Graduation2_3);
comp2D.draw(Graduation2_4);
comp2D.draw(Graduation2_5);
comp2D.draw(Graduation2_6);
comp2D.draw(Graduation2_7);
comp2D.draw(Graduation2_8);
comp2D.draw(Graduation2_9);
comp2D.draw(Graduation3_1);
comp2D.draw(Graduation3_2);
comp2D.draw(Graduation3_3);
comp2D.draw(Graduation3_4);
comp2D.draw(Graduation3_5);
comp2D.draw(Graduation3_6);
comp2D.draw(Graduation3_7);
comp2D.draw(Graduation3_8);
comp2D.draw(Graduation3_9);
//T1、T2标注线
Line2D.Float marked_T1 = new Line2D.Float(265.0f,90.0f,258.0f,105.0f);
Line2D.Float marked_T2 = new Line2D.Float(300.0f,150.0f,285.0f,155.0f);
comp2D.draw(marked_T1);
comp2D.draw(marked_T2);
//显示刻度数字
comp2D.drawString("20", 109, 297);
comp2D.drawString("40", 138, 243);
comp2D.drawString("60", 171, 189);
comp2D.drawString("80", 200, 135);
comp2D.drawString("20", 340, 367);
comp2D.drawString("40", 280, 367);
comp2D.drawString("60", 220, 367);
comp2D.drawString("80", 160, 367);
comp2D.drawString("20", 287, 135);
comp2D.drawString("40", 317, 189);
comp2D.drawString("60", 347, 243);
comp2D.drawString("80", 377, 297);
Stroke dash = new BasicStroke(1.5f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,3.5f,new float[]{3,5,},0f);
comp2D.setStroke(dash);
// comp2D.setStroke(new BasicStroke());
Line2D.Float dotLine1_1 = new Line2D.Float(243.0f,90.0f,319.0f,227.0f);
Line2D.Float dotLine1_2 = new Line2D.Float(319.0f,227.0f,302.0f,253.0f);
Line2D.Float dotLine1_3 = new Line2D.Float(302.0f,253.0f,355.0f,350.0f);
Line2D.Float dotLine2_1 = new Line2D.Float(230.0f,115.0f,288.0f,220.0f);
Line2D.Float dotLine2_2 = new Line2D.Float(288.0f,220.0f,265.0f,260.0f);
Line2D.Float dotLine2_3 = new Line2D.Float(265.0f,260.0f,315.0f,350.0f);
Line2D.Float dotLine3_1 = new Line2D.Float(169.0f,350.0f,268.0f,178.0f);
comp2D.draw(dotLine1_1);
comp2D.draw(dotLine1_2);
comp2D.draw(dotLine1_3);
comp2D.draw(dotLine2_1);
comp2D.draw(dotLine2_2);
comp2D.draw(dotLine2_3);
comp2D.draw(dotLine3_1);
//显示标注
comp2D.drawString("D1", 212, 216);
comp2D.drawString("D2", 258, 226);
comp2D.drawString("D+T", 297, 307);
comp2D.drawString("T3", 345, 307);
comp2D.drawString("T1", 265, 90);
comp2D.drawString("T2", 300, 150);
comp2D.drawString("%CH4", 100, 189);
comp2D.drawString("%C2H4", 370, 189);
comp2D.drawString("%C2H2", 280, 395);
//画箭头
comp2D.setStroke(new BasicStroke());
comp2D.drawLine(118, 243, 167, 162);
GeneralPath arrow = new GeneralPath();
arrow.moveTo(167, 162);
arrow.lineTo(156, 172);
arrow.lineTo(162, 174);
arrow.closePath();
comp2D.fill(arrow);
comp2D.drawLine(327, 160, 369, 237);
GeneralPath arrow2 = new GeneralPath();
arrow2.moveTo(369, 237);
arrow2.lineTo(365, 221);
arrow2.lineTo(361, 226);
arrow2.closePath();
comp2D.fill(arrow2);
comp2D.drawLine(272, 388, 190, 388);
GeneralPath arrow3 = new GeneralPath();
arrow3.moveTo(190, 388);
arrow3.lineTo(208, 393);
arrow3.lineTo(205, 387);
arrow3.closePath();
comp2D.fill(arrow3);
comp2D.drawString("PD-局部放电", 345, 10);
comp2D.drawString("D1-低能放电", 345, 30);
comp2D.drawString("D2-高能放电", 345, 50);
comp2D.drawString("T1-热故障,t<300C", 345, 70);
comp2D.drawString("T2-热故障,300C<t<700C", 345, 90);
comp2D.drawString("T3-热故障,t>700C", 345, 110);
}
public void drawXY(int x, int y)
{
if(x1==-1&&y1==-1)
{
x1 = x;
y1 = y;
x2 = -1;
y2 = -1;
}
else if(x2==-1&&y2==-1)
{
x2 = x;
y2 = y;
this.getGraphics().drawLine(x1, y1, x2, y2);
x1 = -1;
y1 = -1;
}
this.getGraphics().drawString("("+x+","+y+")", 10, 10);
}
}
- 1
- 2
前往页