GrafikModel und Figur eingefügt

This commit is contained in:
Jens Schuhmann 2023-12-18 10:58:58 +01:00
parent 22efa7c18f
commit 78c5d8eedf
7 changed files with 289 additions and 111 deletions

View File

@ -1067,6 +1067,15 @@ is divided into following sections:
<propertyfile file="${built-jar.properties}"> <propertyfile file="${built-jar.properties}">
<entry key="${basedir}" value=""/> <entry key="${basedir}" value=""/>
</propertyfile> </propertyfile>
<antcall target="-maybe-call-dep">
<param name="call.built.properties" value="${built-jar.properties}"/>
<param location="${project.Aufgabe9_mvcGrafik}" name="call.subproject"/>
<param location="${project.Aufgabe9_mvcGrafik}/build.xml" name="call.script"/>
<param name="call.target" value="jar"/>
<param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
<param name="transfer.not.archive.disabled" value="true"/>
<param name="transfer.do.jlink" value="false"/>
</antcall>
</target> </target>
<target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/> <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build"> <target depends="init" name="-check-automatic-build">
@ -1738,6 +1747,15 @@ is divided into following sections:
<propertyfile file="${built-clean.properties}"> <propertyfile file="${built-clean.properties}">
<entry key="${basedir}" value=""/> <entry key="${basedir}" value=""/>
</propertyfile> </propertyfile>
<antcall target="-maybe-call-dep">
<param name="call.built.properties" value="${built-clean.properties}"/>
<param location="${project.Aufgabe9_mvcGrafik}" name="call.subproject"/>
<param location="${project.Aufgabe9_mvcGrafik}/build.xml" name="call.script"/>
<param name="call.target" value="clean"/>
<param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
<param name="transfer.not.archive.disabled" value="true"/>
<param name="transfer.do.jlink" value="false"/>
</antcall>
</target> </target>
<target depends="init" name="-do-clean"> <target depends="init" name="-do-clean">
<delete dir="${build.dir}"/> <delete dir="${build.dir}"/>

View File

@ -1,8 +1,8 @@
build.xml.data.CRC32=05f3ad23 build.xml.data.CRC32=d624b1fd
build.xml.script.CRC32=1a88b66a build.xml.script.CRC32=1a88b66a
build.xml.stylesheet.CRC32=f85dc8f2@1.108.0.48 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. # 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. # 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=05f3ad23 nbproject/build-impl.xml.data.CRC32=d624b1fd
nbproject/build-impl.xml.script.CRC32=fdc076e6 nbproject/build-impl.xml.script.CRC32=476a1ac9
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.108.0.48 nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.108.0.48

View File

@ -37,7 +37,8 @@ endorsed.classpath=
excludes= excludes=
includes=** includes=**
jar.compress=false jar.compress=false
javac.classpath= javac.classpath=\
${reference.Aufgabe9_mvcGrafik.jar}
# Space-separated list of extra javac options # Space-separated list of extra javac options
javac.compilerargs= javac.compilerargs=
javac.deprecation=false javac.deprecation=false
@ -78,6 +79,8 @@ manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false mkdist.disabled=false
platform.active=default_platform platform.active=default_platform
project.Aufgabe9_mvcGrafik=../../T9_mvcGrafik/Aufgabe9_mvcGrafik
reference.Aufgabe9_mvcGrafik.jar=${project.Aufgabe9_mvcGrafik}/dist/Aufgabe9_mvcGrafik.jar
run.classpath=\ run.classpath=\
${javac.classpath}:\ ${javac.classpath}:\
${build.classes.dir} ${build.classes.dir}

View File

@ -11,5 +11,15 @@
<root id="test.src.dir"/> <root id="test.src.dir"/>
</test-roots> </test-roots>
</data> </data>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
<reference>
<foreign-project>Aufgabe9_mvcGrafik</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
</references>
</configuration> </configuration>
</project> </project>

View File

@ -0,0 +1,39 @@
/*
* 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 ChatProgramm.model;
import java.awt.Point;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
*
* @author ahren
*/
public class Figur implements Serializable
{
private ArrayList<Point> punkte;
public Figur(){
punkte = new ArrayList<>();
}
public void addPoint(Point p){
punkte.add(p);
}
public List<Point> getPunkte()
{
return Collections.unmodifiableList(punkte);
}
public void clear(){
punkte.clear();
}
}

View File

@ -0,0 +1,121 @@
/*
* 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 ChatProgramm.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;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import ChatProgramm.util.OhmLogger;
/**
*
* @author le
*/
public class GrafikModel
{
private Figur aktuelleFigur;
private ArrayList<Figur> figuren;
private Preferences pref;
private static Logger lg = OhmLogger.getLogger();
public GrafikModel()
{
aktuelleFigur = new Figur();
figuren = new ArrayList<>();
}
public void addPoint(Point p)
{
aktuelleFigur.addPoint(p);
}
public List<Point> getPunkte()
{
return aktuelleFigur.getPunkte();
}
public List<Figur> 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(figuren);
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)
{
figuren = liste;
}
}
public void endShape() {
figuren.add(aktuelleFigur);
aktuelleFigur = new Figur();
}
/**
* Bestimmt die Adresse des zuletzt besuchten Ordners
* @return letzter Ordner
*/
public String getPref()
{
pref = Preferences.userNodeForPackage(getClass());
return pref.get("lastDirectory", null);
}
/**
* Setzt die Preferenz zu dem zuletzt besuchten Ordner
* @param lastDirectory Bezeichner "lastDirectory"
* @param lastAdress Adresse des zuletzt besuchten Ordners
*/
public void putPref(String lastDirectory, String lastAdress)
{
pref.put(lastDirectory, lastAdress);
}
}

View File

@ -25,115 +25,102 @@ public class ChatView extends javax.swing.JFrame
* regenerated by the Form Editor. * regenerated by the Form Editor.
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() private void initComponents() {
{
dialogChooseMode = new javax.swing.JDialog(); dialogChooseMode = new javax.swing.JDialog();
lblMode = new javax.swing.JLabel(); lblMode = new javax.swing.JLabel();
BtnServer = new javax.swing.JRadioButton(); BtnServer = new javax.swing.JRadioButton();
BtnClient = new javax.swing.JRadioButton(); BtnClient = new javax.swing.JRadioButton();
jPanel1 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel();
BtnConnect = new javax.swing.JButton(); BtnConnect = new javax.swing.JButton();
BtnGrpMode = new javax.swing.ButtonGroup(); BtnGrpMode = new javax.swing.ButtonGroup();
tfNachricht = new javax.swing.JTextField(); tfNachricht = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane(); jScrollPane2 = new javax.swing.JScrollPane();
txtChat = new javax.swing.JTextArea(); txtChat = new javax.swing.JTextArea();
dialogChooseMode.setMinimumSize(new java.awt.Dimension(278, 208)); dialogChooseMode.setMinimumSize(new java.awt.Dimension(278, 208));
dialogChooseMode.getContentPane().setLayout(new java.awt.GridLayout(0, 1)); dialogChooseMode.getContentPane().setLayout(new java.awt.GridLayout(0, 1));
lblMode.setText(" Choose your mode:"); lblMode.setText(" Choose your mode:");
dialogChooseMode.getContentPane().add(lblMode); dialogChooseMode.getContentPane().add(lblMode);
BtnGrpMode.add(BtnServer); BtnGrpMode.add(BtnServer);
BtnServer.setText("Server"); BtnServer.setText("Server");
BtnServer.addActionListener(new java.awt.event.ActionListener() BtnServer.addActionListener(new java.awt.event.ActionListener() {
{ public void actionPerformed(java.awt.event.ActionEvent evt) {
public void actionPerformed(java.awt.event.ActionEvent evt) BtnServerActionPerformed(evt);
{ }
BtnServerActionPerformed(evt); });
} dialogChooseMode.getContentPane().add(BtnServer);
});
dialogChooseMode.getContentPane().add(BtnServer);
BtnGrpMode.add(BtnClient); BtnGrpMode.add(BtnClient);
BtnClient.setText("Client"); BtnClient.setText("Client");
BtnClient.addActionListener(new java.awt.event.ActionListener() BtnClient.addActionListener(new java.awt.event.ActionListener() {
{ public void actionPerformed(java.awt.event.ActionEvent evt) {
public void actionPerformed(java.awt.event.ActionEvent evt) BtnClientActionPerformed(evt);
{ }
BtnClientActionPerformed(evt); });
} dialogChooseMode.getContentPane().add(BtnClient);
});
dialogChooseMode.getContentPane().add(BtnClient);
BtnConnect.setText("Connect"); BtnConnect.setText("Connect");
BtnConnect.addActionListener(new java.awt.event.ActionListener() BtnConnect.addActionListener(new java.awt.event.ActionListener() {
{ public void actionPerformed(java.awt.event.ActionEvent evt) {
public void actionPerformed(java.awt.event.ActionEvent evt) BtnConnectActionPerformed(evt);
{ }
BtnConnectActionPerformed(evt); });
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout); jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup( jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(65, Short.MAX_VALUE) .addContainerGap(65, Short.MAX_VALUE)
.addComponent(BtnConnect) .addComponent(BtnConnect)
.addContainerGap(76, Short.MAX_VALUE)) .addContainerGap(76, Short.MAX_VALUE))
); );
jPanel1Layout.setVerticalGroup( jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
.addComponent(BtnConnect) .addComponent(BtnConnect)
.addContainerGap(57, Short.MAX_VALUE)) .addContainerGap(57, Short.MAX_VALUE))
); );
dialogChooseMode.getContentPane().add(jPanel1); dialogChooseMode.getContentPane().add(jPanel1);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(568, 548)); setMinimumSize(new java.awt.Dimension(568, 548));
addWindowListener(new java.awt.event.WindowAdapter() addWindowListener(new java.awt.event.WindowAdapter() {
{ public void windowOpened(java.awt.event.WindowEvent evt) {
public void windowOpened(java.awt.event.WindowEvent evt) formWindowOpened(evt);
{ }
formWindowOpened(evt); });
}
});
tfNachricht.setToolTipText(""); tfNachricht.setToolTipText("");
tfNachricht.addMouseListener(new java.awt.event.MouseAdapter() tfNachricht.addMouseListener(new java.awt.event.MouseAdapter() {
{ public void mouseClicked(java.awt.event.MouseEvent evt) {
public void mouseClicked(java.awt.event.MouseEvent evt) tfNachrichtMouseClicked(evt);
{ }
tfNachrichtMouseClicked(evt); });
} tfNachricht.addActionListener(new java.awt.event.ActionListener() {
}); public void actionPerformed(java.awt.event.ActionEvent evt) {
tfNachricht.addActionListener(new java.awt.event.ActionListener() tfNachrichtActionPerformed(evt);
{ }
public void actionPerformed(java.awt.event.ActionEvent evt) });
{ getContentPane().add(tfNachricht, java.awt.BorderLayout.PAGE_END);
tfNachrichtActionPerformed(evt);
}
});
getContentPane().add(tfNachricht, java.awt.BorderLayout.PAGE_END);
jScrollPane2.setPreferredSize(new java.awt.Dimension(238, 150)); jScrollPane2.setPreferredSize(new java.awt.Dimension(238, 150));
txtChat.setColumns(20); txtChat.setColumns(20);
txtChat.setRows(5); txtChat.setRows(5);
txtChat.setText("Chat:"); txtChat.setText("Chat:");
jScrollPane2.setViewportView(txtChat); jScrollPane2.setViewportView(txtChat);
getContentPane().add(jScrollPane2, java.awt.BorderLayout.CENTER); getContentPane().add(jScrollPane2, java.awt.BorderLayout.CENTER);
pack(); pack();
}// </editor-fold>//GEN-END:initComponents }// </editor-fold>//GEN-END:initComponents
private void BtnClientActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_BtnClientActionPerformed private void BtnClientActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_BtnClientActionPerformed
{//GEN-HEADEREND:event_BtnClientActionPerformed {//GEN-HEADEREND:event_BtnClientActionPerformed
@ -214,18 +201,18 @@ public class ChatView extends javax.swing.JFrame
}); });
} }
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton BtnClient; private javax.swing.JRadioButton BtnClient;
private javax.swing.JButton BtnConnect; private javax.swing.JButton BtnConnect;
private javax.swing.ButtonGroup BtnGrpMode; private javax.swing.ButtonGroup BtnGrpMode;
private javax.swing.JRadioButton BtnServer; private javax.swing.JRadioButton BtnServer;
private javax.swing.JDialog dialogChooseMode; private javax.swing.JDialog dialogChooseMode;
private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lblMode; private javax.swing.JLabel lblMode;
private javax.swing.JTextField tfNachricht; private javax.swing.JTextField tfNachricht;
private javax.swing.JTextArea txtChat; private javax.swing.JTextArea txtChat;
// End of variables declaration//GEN-END:variables // End of variables declaration//GEN-END:variables
/** /**
* @return the BtnClient * @return the BtnClient