Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package nenr.dz5.crtanje;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class Crtanje {
- public static void main(String args[]) throws Exception {
- JFrame f = new JFrame("Draw a Red Line");
- f.setSize(300, 300);
- f.setLocation(300, 300);
- f.setResizable(false);
- JPanel p = new JPanel() {
- Point point = null;
- ArrayList<Point> points = new ArrayList<>();
- boolean gotovo = false;
- {
- addMouseListener(new MouseAdapter() {
- public void mouseReleased(MouseEvent e) {
- gotovo = true;
- repaint();
- }
- });
- addMouseMotionListener(new MouseMotionAdapter() {
- public void mouseDragged(MouseEvent e) {
- point = e.getPoint();
- points.add(point);
- repaint();
- }
- });
- }
- public void paint(Graphics g) {
- if (gotovo) {
- super.paint(g);
- gotovo = false;
- try {
- obradi(points);
- } catch (IOException e) {
- e.printStackTrace();
- }
- points.clear();
- } else if (point != null) {
- g.setColor(Color.RED);
- g.drawLine(point.x, point.y, point.x, point.y);
- }
- }
- void obradi(ArrayList<Point> points) throws IOException {
- ArrayList<Double> x = new ArrayList<>();
- ArrayList<Double> y = new ArrayList<>();
- int sx = 0, sy = 0;
- for (int i = 0; i < points.size(); ++i) {
- x.add((double) points.get(i).x);
- y.add((double) points.get(i).y);
- sx += points.get(i).x;
- sy += points.get(i).y;
- }
- double midx = (double) sx / points.size();
- double midy = (double) sy / points.size();
- double m = -1;
- for (int i = 0; i < points.size(); ++i) {
- x.set(i, x.get(i) - midx);
- y.set(i, y.get(i) - midy);
- if (Math.abs(x.get(i)) > m) {
- m = Math.abs(x.get(i));
- }
- if (Math.abs(y.get(i)) > m) {
- m = Math.abs(y.get(i));
- }
- }
- for (int i = 0; i < points.size(); ++i) {
- x.set(i, x.get(i) / m);
- y.set(i, y.get(i) / m);
- }
- int razmak = (points.size() - 1) / 19;
- int pos = 0;
- String s = "";
- BufferedWriter bw = new BufferedWriter(new FileWriter("slova", true));
- for (int i = 0; i < 20; ++i) {
- s += x.get(pos) + " " + y.get(pos) + " ";
- pos += razmak;
- }
- s += "0 1 0 0 0\n";
- bw.write(s);
- bw.close();
- }
- };
- f.add(p);
- f.setVisible(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement