GrafikModel und Figur eingefügt
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user