//ConvexHull.java
package convexHull1;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.swing.JFrame;
public class ConvexHull extends Canvas implements MouseListener{
private static int countA;
private static int countB;
private static ArrayList<Point> A = new ArrayList<Point>();
private static ArrayList<Point> B = new ArrayList<Point>();
private static Graphics gDC;
public ConvexHull() {
// TODO Auto-generated constructor stub
countA = 0;
countB = 0;
addMouseListener((MouseListener) this);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame("Convex Hull");
ConvexHull convexHull = new ConvexHull();
jf.setSize(800, 600);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(convexHull);
}
public void paint(Graphics gDC)
{
PrintWriter out;
String str = new String();
try {
out = new PrintWriter(new BufferedWriter(new FileWriter("hulloutput.txt",true)));
str = "";
for(int i = 0;i < countA;i++)
{
gDC.fillOval(A.get(i).getX()-5, A.get(i).getY()-5, 10, 10);
str += A.get(i).toString() + " ";
}
out.println("All points");
out.println(str);
out.println("Points on the hull");
str = "";
for(int i = 0;i < countB;i++)
{
gDC.drawLine(B.get(i).getX(),B.get(i).getY(), B.get((i+1)%countB).getX(),B.get((i+1)%countB).getY());
System.out.println(B.get(i).getX() + " "+ B.get(i).getY());
str += B.get(i).toString() + " ";
}
out.println(str);
System.out.println();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
int x = e.getX();
int y = e.getY();
Point point = new Point(x,y);
A.add(point);
countA++;
while(!B.isEmpty())
B.remove(B.get(0));
//Jarvis.Solve(A, B);
//Graham.Solve(A, B);
//QuickHull.Solve(A,B);
countB = B.size();
repaint();
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
Jak dopisać do tego programu JMenu a następnie reakcję na zdarzenia
takie jak zapis danych do pliku , wybór algorytmu itp