init
This commit is contained in:
parent
4ab1ca3cfe
commit
7dd6e6905e
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/build/
|
||||||
|
/nbproject/private/
|
||||||
|
*.xml
|
||||||
|
*.properties
|
||||||
|
*.mf
|
||||||
|
/dist/
|
||||||
|
/wurfel/nbproject/private/
|
||||||
|
/wurfel/dist/
|
||||||
|
/wurfel/build/
|
43
src/mvcgrafik/Start.java
Executable file
43
src/mvcgrafik/Start.java
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mvcgrafik;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.WindowConstants;
|
||||||
|
import mvcgrafik.controller.GrafikController;
|
||||||
|
import mvcgrafik.model.GrafikModel;
|
||||||
|
import mvcgrafik.view.GrafikView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builder Class
|
||||||
|
* @author le
|
||||||
|
*/
|
||||||
|
public class Start
|
||||||
|
{
|
||||||
|
public Start()
|
||||||
|
{
|
||||||
|
JFrame frm = new JFrame();
|
||||||
|
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||||
|
GrafikView view = new GrafikView();
|
||||||
|
GrafikModel model = new GrafikModel();
|
||||||
|
view.setModel(model);
|
||||||
|
GrafikController controller = new GrafikController(view, model);
|
||||||
|
controller.registerEvents();
|
||||||
|
frm.setContentPane(view);
|
||||||
|
frm.setSize(800, 600);
|
||||||
|
frm.setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param args the command line arguments
|
||||||
|
*/
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new Start();
|
||||||
|
}
|
||||||
|
}
|
78
src/mvcgrafik/controller/GrafikController.java
Executable file
78
src/mvcgrafik/controller/GrafikController.java
Executable file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mvcgrafik.controller;
|
||||||
|
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseListener;
|
||||||
|
import java.awt.event.MouseMotionListener;
|
||||||
|
import mvcgrafik.model.GrafikModel;
|
||||||
|
import mvcgrafik.view.GrafikView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author le
|
||||||
|
*/
|
||||||
|
public class GrafikController implements MouseMotionListener, MouseListener
|
||||||
|
{
|
||||||
|
private GrafikView view;
|
||||||
|
private GrafikModel model;
|
||||||
|
|
||||||
|
public GrafikController(GrafikView view, GrafikModel model)
|
||||||
|
{
|
||||||
|
this.view = view;
|
||||||
|
this.model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerEvents()
|
||||||
|
{
|
||||||
|
view.addMouseMotionListener(this);
|
||||||
|
view.addMouseListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseDragged(MouseEvent evt)
|
||||||
|
{
|
||||||
|
Point p = evt.getPoint();
|
||||||
|
view.drawPoint(p);
|
||||||
|
model.addPoint(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseMoved(MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseClicked(MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(MouseEvent evt)
|
||||||
|
{
|
||||||
|
if (evt.getButton() == MouseEvent.BUTTON3)
|
||||||
|
{
|
||||||
|
view.doPrint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
73
src/mvcgrafik/model/GrafikModel.java
Executable file
73
src/mvcgrafik/model/GrafikModel.java
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package mvcgrafik.model;
|
||||||
|
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author le
|
||||||
|
*/
|
||||||
|
public class GrafikModel
|
||||||
|
{
|
||||||
|
private ArrayList<Point> punkte;
|
||||||
|
|
||||||
|
public GrafikModel()
|
||||||
|
{
|
||||||
|
punkte = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPoint(Point p)
|
||||||
|
{
|
||||||
|
punkte.add(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Point> getPunkte()
|
||||||
|
{
|
||||||
|
return Collections.unmodifiableList(punkte);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void speicherePunkte(String dateiname) throws FileNotFoundException, IOException
|
||||||
|
{
|
||||||
|
FileOutputStream fos = new FileOutputStream(dateiname);
|
||||||
|
BufferedOutputStream buffout = new BufferedOutputStream(fos);
|
||||||
|
ObjectOutputStream oos = new ObjectOutputStream(buffout);
|
||||||
|
oos.writeObject(punkte);
|
||||||
|
oos.flush();
|
||||||
|
oos.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ladePunkte(String dateiname) throws FileNotFoundException, IOException, ClassNotFoundException
|
||||||
|
{
|
||||||
|
FileInputStream fis = new FileInputStream(dateiname);
|
||||||
|
BufferedInputStream buffin = new BufferedInputStream(fis);
|
||||||
|
ObjectInputStream ois = new ObjectInputStream(buffin);
|
||||||
|
Object obj = ois.readObject();
|
||||||
|
// if (obj instanceof ArrayList)
|
||||||
|
// {
|
||||||
|
// punkte = (ArrayList<Point>) obj;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// Fehler ....
|
||||||
|
// }
|
||||||
|
punkte = (ArrayList<Point>) ois.readObject();
|
||||||
|
ois.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
112
src/mvcgrafik/view/GrafikView.java
Executable file
112
src/mvcgrafik/view/GrafikView.java
Executable file
@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package mvcgrafik.view;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.geom.Rectangle2D;
|
||||||
|
import java.awt.print.PageFormat;
|
||||||
|
import java.awt.print.Printable;
|
||||||
|
import java.awt.print.PrinterException;
|
||||||
|
import java.awt.print.PrinterJob;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.print.attribute.HashPrintRequestAttributeSet;
|
||||||
|
import javax.print.attribute.standard.DialogTypeSelection;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import mvcgrafik.model.GrafikModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author le
|
||||||
|
*/
|
||||||
|
public class GrafikView extends JComponent implements Printable
|
||||||
|
{
|
||||||
|
private final static Dimension EINS = new Dimension(1, 1);
|
||||||
|
private final static Logger lg = Logger.getLogger("mvcGrafik");
|
||||||
|
private Rectangle2D.Float pixel;
|
||||||
|
private GrafikModel model;
|
||||||
|
|
||||||
|
public GrafikView()
|
||||||
|
{
|
||||||
|
pixel = new Rectangle2D.Float();
|
||||||
|
this.setBackground(Color.WHITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModel(GrafikModel model)
|
||||||
|
{
|
||||||
|
this.model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawPoint(Point p)
|
||||||
|
{
|
||||||
|
Graphics2D g2 = (Graphics2D) this.getGraphics();
|
||||||
|
pixel.setFrame(p, EINS);
|
||||||
|
g2.draw(pixel);
|
||||||
|
g2.dispose(); // VERY, VERY WICHTIG
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paintComponent(Graphics g)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
lg.severe("keine Referenz auf Model vorhanden");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
super.paintComponent(g);
|
||||||
|
Graphics2D g2 = (Graphics2D) g;
|
||||||
|
|
||||||
|
for (Point p : model.getPunkte())
|
||||||
|
{
|
||||||
|
pixel.setFrame(p, EINS);
|
||||||
|
g2.draw(pixel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doPrint()
|
||||||
|
{
|
||||||
|
HashPrintRequestAttributeSet printSet =
|
||||||
|
new HashPrintRequestAttributeSet();
|
||||||
|
printSet.add(DialogTypeSelection.NATIVE);
|
||||||
|
PrinterJob pj = PrinterJob.getPrinterJob();
|
||||||
|
pj.setPrintable(this);
|
||||||
|
// Druckdialog
|
||||||
|
if (pj.printDialog(printSet))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pj.print(printSet);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
JOptionPane.showMessageDialog(this, ex.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int print(Graphics gp, PageFormat pf, int pageIndex) throws PrinterException
|
||||||
|
{
|
||||||
|
Graphics2D g2p = (Graphics2D) gp;
|
||||||
|
if (pageIndex == 1)
|
||||||
|
{
|
||||||
|
g2p.translate(pf.getImageableX(), pf.getImageableY());
|
||||||
|
g2p.scale(pf.getImageableWidth()/pf.getWidth(),
|
||||||
|
pf.getImageableHeight() / pf.getHeight());
|
||||||
|
super.print(g2p);
|
||||||
|
return Printable.PAGE_EXISTS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Printable.NO_SUCH_PAGE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user