以下の内容の入力 file-file.txt があります
M1 100 100 400.89 400.72 400 400 450.89 450.72
M2 100 100 440.56 440.82
M3 100 200 300.52 330.75
200 200 320.53 340.34
300 300 400.43 350.25
長方形を描画するプログラムを作成しましたが、M1、M2、および M3 に対して同時に描画することはできません。各行の 4 つの double 値は、長方形の 2 つの座標を表します。また、私のファイルが
M1 = [ 100 100 400.89 400.72;
400 400 450.89 450.72 ]
M2 = [100 100 440.56 440.82]
M3 = [100 200 300.52 330.75;
200 200 320.53 340.34;
300 300 400.43 350.25]
私が書いたコードは次のとおりです。
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import java.math.*;
import java.text.DecimalFormat.*;
class Rectangles extends JComponent
{
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
try
{
File x=new File("file.txt");
Scanner sc=new Scanner(x);
while(sc.hasNext())
{
String s=sc.next();
if(s.equals("M1"))
{
while(sc.hasNext())
{
double x1=sc.nextDouble();
double y1=sc.nextDouble();
double x3=sc.nextDouble();
double y3=sc.nextDouble();
double x2=x3;
double y2=y1;
double x4=x1;
double y4=y3;
double a=x1;
double b=y1;
double c1=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
double d1=Math.sqrt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1));
double c=c1;
double d=d1;
g2.setPaint(Color.blue);
g2.draw(new Rectangle2D.Double(a,b,c,d));
g2.fill(new Rectangle2D.Double(a,b,c,d));
}
}
}}
catch(Exception e)
{
System.out.println("reported Exception");
}
}
}
public class eighth
{
public static void main(String[] args)throws IOException
{
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(60, 60, 900, 900);
window.getContentPane().add(new Rectangles());
window.setVisible(true);
}
}
タイプ M1、M2、M3 の 3 つの長方形を同時に描画するにはどうすればよいですか?