@@ -0,0 +1,73 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!-- You may freely edit this file. See commented blocks below for --> | |||
<!-- some examples of how to customize the build. --> | |||
<!-- (If you delete it and reopen the project it will be recreated.) --> | |||
<!-- By default, only the Clean and Build commands use this build script. --> | |||
<!-- Commands such as Run, Debug, and Test only use this build script if --> | |||
<!-- the Compile on Save feature is turned off for the project. --> | |||
<!-- You can turn off the Compile on Save (or Deploy on Save) setting --> | |||
<!-- in the project's Project Properties dialog box.--> | |||
<project name="Aufgabe9_mvcGrafik" default="default" basedir="."> | |||
<description>Builds, tests, and runs the project Aufgabe9_mvcGrafik.</description> | |||
<import file="nbproject/build-impl.xml"/> | |||
<!-- | |||
There exist several targets which are by default empty and which can be | |||
used for execution of your tasks. These targets are usually executed | |||
before and after some main targets. They are: | |||
-pre-init: called before initialization of project properties | |||
-post-init: called after initialization of project properties | |||
-pre-compile: called before javac compilation | |||
-post-compile: called after javac compilation | |||
-pre-compile-single: called before javac compilation of single file | |||
-post-compile-single: called after javac compilation of single file | |||
-pre-compile-test: called before javac compilation of JUnit tests | |||
-post-compile-test: called after javac compilation of JUnit tests | |||
-pre-compile-test-single: called before javac compilation of single JUnit test | |||
-post-compile-test-single: called after javac compilation of single JUunit test | |||
-pre-jar: called before JAR building | |||
-post-jar: called after JAR building | |||
-post-clean: called after cleaning build products | |||
(Targets beginning with '-' are not intended to be called on their own.) | |||
Example of inserting an obfuscator after compilation could look like this: | |||
<target name="-post-compile"> | |||
<obfuscate> | |||
<fileset dir="${build.classes.dir}"/> | |||
</obfuscate> | |||
</target> | |||
For list of available properties check the imported | |||
nbproject/build-impl.xml file. | |||
Another way to customize the build is by overriding existing main targets. | |||
The targets of interest are: | |||
-init-macrodef-javac: defines macro for javac compilation | |||
-init-macrodef-junit: defines macro for junit execution | |||
-init-macrodef-debug: defines macro for class debugging | |||
-init-macrodef-java: defines macro for class execution | |||
-do-jar: JAR building | |||
run: execution of project | |||
-javadoc-build: Javadoc generation | |||
test-report: JUnit report generation | |||
An example of overriding the target for project execution could look like this: | |||
<target name="run" depends="Aufgabe9_mvcGrafik-impl.jar"> | |||
<exec dir="bin" executable="launcher.exe"> | |||
<arg file="${dist.jar}"/> | |||
</exec> | |||
</target> | |||
Notice that the overridden target depends on the jar target and not only on | |||
the compile target as the regular run target does. Again, for a list of available | |||
properties which you can use, check the target you are overriding in the | |||
nbproject/build-impl.xml file. | |||
--> | |||
</project> |
@@ -0,0 +1,3 @@ | |||
Manifest-Version: 1.0 | |||
X-COMMENT: Main-Class will be added automatically by build | |||
@@ -0,0 +1,8 @@ | |||
build.xml.data.CRC32=ed859e61 | |||
build.xml.script.CRC32=b640427c | |||
build.xml.stylesheet.CRC32=f85dc8f2@1.108.0.48 | |||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. | |||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. | |||
nbproject/build-impl.xml.data.CRC32=ed859e61 | |||
nbproject/build-impl.xml.script.CRC32=d5540e9a | |||
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.108.0.48 |
@@ -0,0 +1,95 @@ | |||
annotation.processing.enabled=true | |||
annotation.processing.enabled.in.editor=false | |||
annotation.processing.processor.options= | |||
annotation.processing.processors.list= | |||
annotation.processing.run.all.processors=true | |||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output | |||
build.classes.dir=${build.dir}/classes | |||
build.classes.excludes=**/*.java,**/*.form | |||
# This directory is removed when the project is cleaned: | |||
build.dir=build | |||
build.generated.dir=${build.dir}/generated | |||
build.generated.sources.dir=${build.dir}/generated-sources | |||
# Only compile against the classpath explicitly listed here: | |||
build.sysclasspath=ignore | |||
build.test.classes.dir=${build.dir}/test/classes | |||
build.test.results.dir=${build.dir}/test/results | |||
# Uncomment to specify the preferred debugger connection transport: | |||
#debug.transport=dt_socket | |||
debug.classpath=\ | |||
${run.classpath} | |||
debug.modulepath=\ | |||
${run.modulepath} | |||
debug.test.classpath=\ | |||
${run.test.classpath} | |||
debug.test.modulepath=\ | |||
${run.test.modulepath} | |||
# Files in build.classes.dir which should be excluded from distribution jar | |||
dist.archive.excludes= | |||
# This directory is removed when the project is cleaned: | |||
dist.dir=dist | |||
dist.jar=${dist.dir}/Aufgabe9_mvcGrafik.jar | |||
dist.javadoc.dir=${dist.dir}/javadoc | |||
dist.jlink.dir=${dist.dir}/jlink | |||
dist.jlink.output=${dist.jlink.dir}/Aufgabe9_mvcGrafik | |||
excludes= | |||
includes=** | |||
jar.compress=false | |||
javac.classpath= | |||
# Space-separated list of extra javac options | |||
javac.compilerargs= | |||
javac.deprecation=false | |||
javac.external.vm=true | |||
javac.modulepath= | |||
javac.processormodulepath= | |||
javac.processorpath=\ | |||
${javac.classpath} | |||
javac.source=17 | |||
javac.target=17 | |||
javac.test.classpath=\ | |||
${javac.classpath}:\ | |||
${build.classes.dir} | |||
javac.test.modulepath=\ | |||
${javac.modulepath} | |||
javac.test.processorpath=\ | |||
${javac.test.classpath} | |||
javadoc.additionalparam= | |||
javadoc.author=false | |||
javadoc.encoding=${source.encoding} | |||
javadoc.html5=false | |||
javadoc.noindex=false | |||
javadoc.nonavbar=false | |||
javadoc.notree=false | |||
javadoc.private=false | |||
javadoc.splitindex=true | |||
javadoc.use=true | |||
javadoc.version=false | |||
javadoc.windowtitle= | |||
# The jlink additional root modules to resolve | |||
jlink.additionalmodules= | |||
# The jlink additional command line parameters | |||
jlink.additionalparam= | |||
jlink.launcher=true | |||
jlink.launcher.name=Aufgabe9_mvcGrafik | |||
main.class=mvcgrafik.Start | |||
manifest.file=manifest.mf | |||
meta.inf.dir=${src.dir}/META-INF | |||
mkdist.disabled=false | |||
platform.active=default_platform | |||
run.classpath=\ | |||
${javac.classpath}:\ | |||
${build.classes.dir} | |||
# Space-separated list of JVM arguments used when running the project. | |||
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. | |||
# To set system properties for unit tests define test-sys-prop.name=value: | |||
run.jvmargs= | |||
run.modulepath=\ | |||
${javac.modulepath} | |||
run.test.classpath=\ | |||
${javac.test.classpath}:\ | |||
${build.test.classes.dir} | |||
run.test.modulepath=\ | |||
${javac.test.modulepath} | |||
source.encoding=UTF-8 | |||
src.dir=src | |||
test.src.dir=test |
@@ -0,0 +1,15 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project xmlns="http://www.netbeans.org/ns/project/1"> | |||
<type>org.netbeans.modules.java.j2seproject</type> | |||
<configuration> | |||
<data xmlns="http://www.netbeans.org/ns/j2se-project/3"> | |||
<name>Aufgabe9_mvcGrafik</name> | |||
<source-roots> | |||
<root id="src.dir"/> | |||
</source-roots> | |||
<test-roots> | |||
<root id="test.src.dir"/> | |||
</test-roots> | |||
</data> | |||
</configuration> | |||
</project> |
@@ -0,0 +1,47 @@ | |||
/* | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | |||
*/ | |||
package mvcgrafik; | |||
import javax.swing.JOptionPane; | |||
import javax.swing.UIManager; | |||
import mvcgrafik.controller.GrafikController; | |||
import mvcgrafik.model.GrafikModel; | |||
import mvcgrafik.view.GrafikFrame; | |||
import mvcgrafik.view.GrafikView; | |||
/** | |||
* Builder Class | |||
* @author le | |||
*/ | |||
public class Start | |||
{ | |||
public Start() | |||
{ | |||
GrafikModel model = new GrafikModel(); | |||
GrafikFrame frm = new GrafikFrame(); | |||
GrafikView view = frm.getgZeichenflaeche(); | |||
view.setModel(model); | |||
GrafikController controller = new GrafikController(view, model); | |||
controller.registerEvents(); | |||
frm.setVisible(true); | |||
} | |||
/** | |||
* @param args the command line arguments | |||
*/ | |||
public static void main(String[] args) | |||
{ | |||
try | |||
{ | |||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); | |||
} | |||
catch (Exception ex) | |||
{ | |||
JOptionPane.showMessageDialog(null, ex.toString()); | |||
} | |||
new Start(); | |||
} | |||
} |
@@ -0,0 +1,58 @@ | |||
/* | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template | |||
*/ | |||
package mvcgrafik.controller; | |||
import java.awt.Point; | |||
import java.awt.event.MouseAdapter; | |||
import java.awt.event.MouseEvent; | |||
import java.awt.event.MouseMotionListener; | |||
import mvcgrafik.model.GrafikModel; | |||
import mvcgrafik.view.GrafikView; | |||
/** | |||
* | |||
* @author le | |||
*/ | |||
public class GrafikController extends MouseAdapter implements MouseMotionListener | |||
{ | |||
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(); | |||
model.addPoint(p); | |||
view.drawPoint(p); | |||
} | |||
@Override | |||
public void mouseMoved(MouseEvent e) | |||
{ | |||
} | |||
@Override | |||
public void mouseReleased(MouseEvent evt) | |||
{ | |||
model.endShape(); | |||
if (evt.getButton() == MouseEvent.BUTTON3) | |||
{ | |||
view.doPrint(); | |||
} | |||
} | |||
} |
@@ -0,0 +1,98 @@ | |||
/* | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template | |||
*/ | |||
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; | |||
private ArrayList<ArrayList> figuren; | |||
public GrafikModel() | |||
{ | |||
punkte = new ArrayList<>(); | |||
figuren = new ArrayList<>(); | |||
} | |||
public void addPoint(Point p) | |||
{ | |||
punkte.add(p); | |||
} | |||
public List<Point> getPunkte() | |||
{ | |||
return Collections.unmodifiableList(punkte); | |||
} | |||
public List<ArrayList> getFiguren(){ | |||
return Collections.unmodifiableList(figuren); | |||
} | |||
/** | |||
* Persistenz via Serialisierung | |||
* @param dateiname | |||
* @throws FileNotFoundException | |||
* @throws IOException | |||
*/ | |||
public void speicherePunkte(String dateiname) throws FileNotFoundException, IOException | |||
{ | |||
// an Preferences denken!! | |||
FileOutputStream fos = new FileOutputStream(dateiname); | |||
//wichtig Puffer -> Performance | |||
BufferedOutputStream bos = new BufferedOutputStream(fos); | |||
//Serialisierung | |||
ObjectOutputStream oos = new ObjectOutputStream(bos); | |||
oos.writeObject(punkte); | |||
oos.flush(); // Puffer | |||
oos.close(); | |||
} | |||
public void lesePunkte(String dateiname) throws FileNotFoundException, IOException, ClassNotFoundException | |||
{ | |||
// an Preferences denken!! | |||
FileInputStream fis = new FileInputStream(dateiname); | |||
//wichtig Puffer -> Performance | |||
BufferedInputStream bis = new BufferedInputStream(fis); | |||
//Serialisierung | |||
ObjectInputStream ois = new ObjectInputStream(bis); | |||
Object daten = ois.readObject(); // Achtung | |||
// if (daten instanceof ArrayList) | |||
// { | |||
// punkte = (ArrayList<Point>)daten; | |||
// } | |||
//eleganter | |||
if (daten instanceof ArrayList liste) | |||
{ | |||
punkte = liste; | |||
} | |||
} | |||
public void endShape() { | |||
figuren.add(punkte); | |||
punkte.clear(); | |||
} | |||
} |
@@ -0,0 +1,39 @@ | |||
<?xml version="1.0" encoding="UTF-8" ?> | |||
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> | |||
<Properties> | |||
<Property name="defaultCloseOperation" type="int" value="3"/> | |||
</Properties> | |||
<SyntheticProperties> | |||
<SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-100,0,0,2,28"/> | |||
<SyntheticProperty name="formSizePolicy" type="int" value="0"/> | |||
<SyntheticProperty name="generateSize" type="boolean" value="true"/> | |||
<SyntheticProperty name="generateCenter" type="boolean" value="true"/> | |||
</SyntheticProperties> | |||
<AuxValues> | |||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> | |||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> | |||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | |||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | |||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | |||
</AuxValues> | |||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> | |||
<SubComponents> | |||
<Container class="mvcgrafik.view.GrafikView" name="gZeichenflaeche"> | |||
<Constraints> | |||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> | |||
<BorderConstraints direction="Center"/> | |||
</Constraint> | |||
</Constraints> | |||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout"> | |||
<Property name="useNullLayout" type="boolean" value="true"/> | |||
</Layout> | |||
</Container> | |||
</SubComponents> | |||
</Form> |
@@ -0,0 +1,100 @@ | |||
/* | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template | |||
*/ | |||
package mvcgrafik.view; | |||
/** | |||
* | |||
* @author le | |||
*/ | |||
public class GrafikFrame extends javax.swing.JFrame | |||
{ | |||
/** | |||
* @return the gZeichenflaeche | |||
*/ | |||
public mvcgrafik.view.GrafikView getgZeichenflaeche() | |||
{ | |||
return gZeichenflaeche; | |||
} | |||
/** | |||
* Creates new form GrafikFrame | |||
*/ | |||
public GrafikFrame() | |||
{ | |||
initComponents(); | |||
} | |||
/** | |||
* This method is called from within the constructor to initialize the form. | |||
* WARNING: Do NOT modify this code. The content of this method is always | |||
* regenerated by the Form Editor. | |||
*/ | |||
@SuppressWarnings("unchecked") | |||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents | |||
private void initComponents() | |||
{ | |||
gZeichenflaeche = new mvcgrafik.view.GrafikView(); | |||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | |||
getContentPane().add(gZeichenflaeche, java.awt.BorderLayout.CENTER); | |||
setSize(new java.awt.Dimension(540, 412)); | |||
setLocationRelativeTo(null); | |||
}// </editor-fold>//GEN-END:initComponents | |||
/** | |||
* @param args the command line arguments | |||
*/ | |||
public static void main(String args[]) | |||
{ | |||
/* Set the Nimbus look and feel */ | |||
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> | |||
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. | |||
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html | |||
*/ | |||
try | |||
{ | |||
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) | |||
{ | |||
if ("Nimbus".equals(info.getName())) | |||
{ | |||
javax.swing.UIManager.setLookAndFeel(info.getClassName()); | |||
break; | |||
} | |||
} | |||
} | |||
catch (ClassNotFoundException ex) | |||
{ | |||
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} | |||
catch (InstantiationException ex) | |||
{ | |||
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} | |||
catch (IllegalAccessException ex) | |||
{ | |||
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} | |||
catch (javax.swing.UnsupportedLookAndFeelException ex) | |||
{ | |||
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |||
} | |||
//</editor-fold> | |||
/* Create and display the form */ | |||
java.awt.EventQueue.invokeLater(new Runnable() | |||
{ | |||
public void run() | |||
{ | |||
new GrafikFrame().setVisible(true); | |||
} | |||
}); | |||
} | |||
// Variables declaration - do not modify//GEN-BEGIN:variables | |||
private mvcgrafik.view.GrafikView gZeichenflaeche; | |||
// End of variables declaration//GEN-END:variables | |||
} |
@@ -0,0 +1,191 @@ | |||
/* | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template | |||
*/ | |||
package mvcgrafik.view; | |||
import java.awt.Dimension; | |||
import java.awt.Graphics; | |||
import java.awt.Graphics2D; | |||
import java.awt.Point; | |||
import java.awt.geom.Rectangle2D; | |||
import java.awt.geom.Line2D; | |||
import java.awt.print.PageFormat; | |||
import java.awt.print.Printable; | |||
import java.awt.print.PrinterException; | |||
import java.awt.print.PrinterJob; | |||
import java.util.ArrayList; | |||
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 static Dimension EINS = new Dimension(1, 1); // Dimension ist eine Klasse die width udn height hält | |||
private Rectangle2D.Float pixel; | |||
private Line2D.Float line; | |||
private GrafikModel model; | |||
public GrafikView() | |||
{ | |||
pixel = new Rectangle2D.Float(); | |||
} | |||
public void setModel(GrafikModel model) | |||
{ | |||
this.model = model; | |||
} | |||
public void drawPoint(Point p) | |||
{ | |||
Graphics2D g2 = (Graphics2D)this.getGraphics(); // gefährlich! | |||
paintComponent(g2); | |||
// pixel.setFrame(p, EINS); | |||
// g2.draw(pixel); | |||
//Um die aktuelle Figur zu zeichnen | |||
int pathSize = model.getPunkte().size(); | |||
for(int i=0; i < pathSize-1; i++) | |||
{ | |||
Point from = model.getPunkte().get(i); | |||
Point to = model.getPunkte().get(i+1); | |||
line = new Line2D.Float(from.x,from.y,to.x,to.y) {}; | |||
g2.draw(line); | |||
} | |||
//Um die fertigen Figuren zu zeichnen | |||
model.getFiguren().forEach(figure-> | |||
{ | |||
ArrayList<Point> currentPath = new ArrayList<>(figure); | |||
int figurePath = currentPath.size(); | |||
for(int i=0; i < figurePath-1; i++) | |||
{ | |||
Point from = currentPath.get(i); | |||
Point to = model.getPunkte().get(i+1); | |||
line = new Line2D.Float(from.x,from.y,to.x,to.y) {}; | |||
g2.draw(line); | |||
} | |||
}); | |||
g2.dispose(); //SEEEEHHHHRRRR WICHTIG!!!!!!! | |||
} | |||
public void paintComponent(Graphics g) | |||
{ | |||
if (model == null) return; | |||
super.paintComponent(g); | |||
Graphics2D g2 = (Graphics2D)g; | |||
// int pathSize = model.getPunkte().size(); | |||
// | |||
// for(int i=0; i < pathSize-1; i++) | |||
// { | |||
// Point from = model.getPunkte().get(i); | |||
// Point to = model.getPunkte().get(i+1); | |||
// | |||
// line = new Line2D.Float(from.x,from.y,to.x,to.y) {}; | |||
// g2.draw(line); | |||
// } | |||
model.getFiguren().forEach(figure-> | |||
{ | |||
ArrayList<Point> currentPath = new ArrayList<>(figure); | |||
int figurePath = currentPath.size(); | |||
for(int i=0; i < figurePath-1; i++) | |||
{ | |||
Point from = currentPath.get(i); | |||
Point to = model.getPunkte().get(i+1); | |||
line = new Line2D.Float(from.x,from.y,to.x,to.y) {}; | |||
g2.draw(line); | |||
} | |||
}); | |||
// model.getPunkte().forEach(p -> | |||
// { | |||
// pixel.setFrame(p, EINS); | |||
// g2.draw(pixel); | |||
// }); | |||
} | |||
// public void drawPath(ArrayList<Point> path){ | |||
// Graphics2D g2 = (Graphics2D)this.getGraphics(); | |||
// | |||
// int pathSize = path.size(); | |||
// | |||
// for(int i=0; i < pathSize-1; i++) | |||
// { | |||
// Point from = model.getPunkte().get(i); | |||
// Point to = model.getPunkte().get(i+1); | |||
// | |||
// line = new Line2D.Float(from.x,from.y,to.x,to.y) {}; | |||
// g2.draw(line); | |||
// } | |||
// | |||
// g2.dispose(); | |||
// | |||
// } | |||
public void doPrint() | |||
{ | |||
HashPrintRequestAttributeSet printSet = | |||
new HashPrintRequestAttributeSet(); | |||
printSet.add(DialogTypeSelection.NATIVE); | |||
PrinterJob pj = PrinterJob.getPrinterJob(); | |||
pj.setPrintable(this); | |||
//Dialog | |||
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 == 0) | |||
{ | |||
g2p.translate(pf.getImageableX(), pf.getImageableY()); | |||
g2p.scale(pf.getImageableWidth() / this.getWidth(), | |||
pf.getImageableHeight() / this.getHeight()); | |||
super.print(g2p); | |||
return Printable.PAGE_EXISTS; | |||
} | |||
else | |||
{ | |||
return Printable.NO_SUCH_PAGE; // wichtig sonst Papiervernichtung | |||
} | |||
} | |||
} |