GrafikModel und Figur eingefügt

This commit is contained in:
2023-12-18 10:58:58 +01:00
parent 22efa7c18f
commit 78c5d8eedf
7 changed files with 289 additions and 111 deletions
+39
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();
}
}
+121
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);
}
}
+94 -107
View File
@@ -25,115 +25,102 @@ public class ChatView extends javax.swing.JFrame
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents()
{
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
dialogChooseMode = new javax.swing.JDialog();
lblMode = new javax.swing.JLabel();
BtnServer = new javax.swing.JRadioButton();
BtnClient = new javax.swing.JRadioButton();
jPanel1 = new javax.swing.JPanel();
BtnConnect = new javax.swing.JButton();
BtnGrpMode = new javax.swing.ButtonGroup();
tfNachricht = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
txtChat = new javax.swing.JTextArea();
dialogChooseMode = new javax.swing.JDialog();
lblMode = new javax.swing.JLabel();
BtnServer = new javax.swing.JRadioButton();
BtnClient = new javax.swing.JRadioButton();
jPanel1 = new javax.swing.JPanel();
BtnConnect = new javax.swing.JButton();
BtnGrpMode = new javax.swing.ButtonGroup();
tfNachricht = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
txtChat = new javax.swing.JTextArea();
dialogChooseMode.setMinimumSize(new java.awt.Dimension(278, 208));
dialogChooseMode.getContentPane().setLayout(new java.awt.GridLayout(0, 1));
dialogChooseMode.setMinimumSize(new java.awt.Dimension(278, 208));
dialogChooseMode.getContentPane().setLayout(new java.awt.GridLayout(0, 1));
lblMode.setText(" Choose your mode:");
dialogChooseMode.getContentPane().add(lblMode);
lblMode.setText(" Choose your mode:");
dialogChooseMode.getContentPane().add(lblMode);
BtnGrpMode.add(BtnServer);
BtnServer.setText("Server");
BtnServer.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
BtnServerActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnServer);
BtnGrpMode.add(BtnServer);
BtnServer.setText("Server");
BtnServer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnServerActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnServer);
BtnGrpMode.add(BtnClient);
BtnClient.setText("Client");
BtnClient.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
BtnClientActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnClient);
BtnGrpMode.add(BtnClient);
BtnClient.setText("Client");
BtnClient.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnClientActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnClient);
BtnConnect.setText("Connect");
BtnConnect.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
BtnConnectActionPerformed(evt);
}
});
BtnConnect.setText("Connect");
BtnConnect.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnConnectActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(65, Short.MAX_VALUE)
.addComponent(BtnConnect)
.addContainerGap(76, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(BtnConnect)
.addContainerGap(57, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(65, Short.MAX_VALUE)
.addComponent(BtnConnect)
.addContainerGap(76, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(BtnConnect)
.addContainerGap(57, Short.MAX_VALUE))
);
dialogChooseMode.getContentPane().add(jPanel1);
dialogChooseMode.getContentPane().add(jPanel1);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(568, 548));
addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowOpened(java.awt.event.WindowEvent evt)
{
formWindowOpened(evt);
}
});
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(568, 548));
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
tfNachricht.setToolTipText("");
tfNachricht.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent evt)
{
tfNachrichtMouseClicked(evt);
}
});
tfNachricht.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
tfNachrichtActionPerformed(evt);
}
});
getContentPane().add(tfNachricht, java.awt.BorderLayout.PAGE_END);
tfNachricht.setToolTipText("");
tfNachricht.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tfNachrichtMouseClicked(evt);
}
});
tfNachricht.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
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.setRows(5);
txtChat.setText("Chat:");
jScrollPane2.setViewportView(txtChat);
txtChat.setColumns(20);
txtChat.setRows(5);
txtChat.setText("Chat:");
jScrollPane2.setViewportView(txtChat);
getContentPane().add(jScrollPane2, java.awt.BorderLayout.CENTER);
getContentPane().add(jScrollPane2, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
pack();
}// </editor-fold>//GEN-END:initComponents
private void BtnClientActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST: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
private javax.swing.JRadioButton BtnClient;
private javax.swing.JButton BtnConnect;
private javax.swing.ButtonGroup BtnGrpMode;
private javax.swing.JRadioButton BtnServer;
private javax.swing.JDialog dialogChooseMode;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lblMode;
private javax.swing.JTextField tfNachricht;
private javax.swing.JTextArea txtChat;
// End of variables declaration//GEN-END:variables
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton BtnClient;
private javax.swing.JButton BtnConnect;
private javax.swing.ButtonGroup BtnGrpMode;
private javax.swing.JRadioButton BtnServer;
private javax.swing.JDialog dialogChooseMode;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lblMode;
private javax.swing.JTextField tfNachricht;
private javax.swing.JTextArea txtChat;
// End of variables declaration//GEN-END:variables
/**
* @return the BtnClient