Erstes Ergebnis
This commit is contained in:
parent
0324b261da
commit
1d6e0ccdb0
39
EierUhr/src/controller/EieruhrController.java
Normal file
39
EierUhr/src/controller/EieruhrController.java
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* 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 controller;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.Observer;
|
||||||
|
import model.Model;
|
||||||
|
import view.View;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author nobody
|
||||||
|
*/
|
||||||
|
public class EieruhrController implements Observer
|
||||||
|
{
|
||||||
|
private View view;
|
||||||
|
private Model model;
|
||||||
|
|
||||||
|
public EieruhrController(View view, Model model)
|
||||||
|
{
|
||||||
|
this.view = view;
|
||||||
|
this.model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerEvents()
|
||||||
|
{
|
||||||
|
model.addObserver(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable o, Object arg)
|
||||||
|
{
|
||||||
|
view.getLblCounter().setText(Integer.toString(model.getZahl()));
|
||||||
|
}
|
||||||
|
}
|
141
EierUhr/src/eieruhr/Fassade.java
Normal file
141
EierUhr/src/eieruhr/Fassade.java
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
* 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 eieruhr;
|
||||||
|
|
||||||
|
import controller.EieruhrController;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.lang.System.Logger;
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.Observer;
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import model.Model;
|
||||||
|
import view.View;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builder Class
|
||||||
|
* @author Apollo
|
||||||
|
*/
|
||||||
|
public class Fassade extends JComponent implements PropertyChangeListener, Observer
|
||||||
|
{
|
||||||
|
Dimension preferredSize;
|
||||||
|
Dimension minimumSize;
|
||||||
|
private static Logger log;
|
||||||
|
|
||||||
|
private static Model model;
|
||||||
|
private static View view;
|
||||||
|
private static EieruhrController controller;
|
||||||
|
|
||||||
|
private CopyOnWriteArrayList<TimerListener> listenerListe;
|
||||||
|
private static int neu,alt;
|
||||||
|
|
||||||
|
public Fassade()
|
||||||
|
{
|
||||||
|
minimumSize = new Dimension(100,50);
|
||||||
|
preferredSize = new Dimension(200,100);
|
||||||
|
|
||||||
|
model = new Model();
|
||||||
|
view = new View();
|
||||||
|
controller = new EieruhrController(view, model);
|
||||||
|
controller.registerEvents();
|
||||||
|
registerEvents();
|
||||||
|
|
||||||
|
this.listenerListe = new CopyOnWriteArrayList<TimerListener>();
|
||||||
|
|
||||||
|
alt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZahl(int x)
|
||||||
|
{
|
||||||
|
model.setStartZahl(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZahl()
|
||||||
|
{
|
||||||
|
return model.getZahl();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dimension getPreferredSize()
|
||||||
|
{
|
||||||
|
return preferredSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dimension getMinimumSize()
|
||||||
|
{
|
||||||
|
return minimumSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void isWarten(boolean warten)
|
||||||
|
{
|
||||||
|
if(warten) {
|
||||||
|
model.isWarten();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void isWeiterlaufen(boolean weiter){
|
||||||
|
if(weiter) {
|
||||||
|
model.isWeiterlaufen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void starten()
|
||||||
|
{
|
||||||
|
model.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setaktuelleZahl()
|
||||||
|
{
|
||||||
|
neu = model.getZahl();
|
||||||
|
this.firePropertyChange("aktuelle Zahl", alt, neu);
|
||||||
|
alt = neu;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void propertyChange(PropertyChangeEvent evt)
|
||||||
|
{
|
||||||
|
Object obj = evt.getNewValue();
|
||||||
|
if (obj instanceof Boolean)
|
||||||
|
{
|
||||||
|
// Reaktion auf die Nachricht:
|
||||||
|
this.starten();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void addEigenerListener(TimerListener horcher)
|
||||||
|
{
|
||||||
|
listenerListe.add(horcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void removeEignerListener(TimerListener horcher)
|
||||||
|
{
|
||||||
|
listenerListe.remove(horcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fireTimerEvent(TimerEvent evt)
|
||||||
|
{
|
||||||
|
listenerListe.forEach(listener -> listener.timerabgelaufen(evt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerEvents()
|
||||||
|
{
|
||||||
|
model.addObserver(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable arg0, Object arg1)
|
||||||
|
{
|
||||||
|
if(model.getZahl() == 0)
|
||||||
|
{
|
||||||
|
fireTimerEvent(new TimerEvent(this));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setaktuelleZahl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
279
EierUhr/src/eieruhr/FassadeBeanInfo.java
Normal file
279
EierUhr/src/eieruhr/FassadeBeanInfo.java
Normal file
@ -0,0 +1,279 @@
|
|||||||
|
/*
|
||||||
|
* 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 eieruhr;
|
||||||
|
|
||||||
|
import java.beans.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Apollo
|
||||||
|
*/
|
||||||
|
public class FassadeBeanInfo extends SimpleBeanInfo
|
||||||
|
{
|
||||||
|
|
||||||
|
// Bean descriptor//GEN-FIRST:BeanDescriptor
|
||||||
|
/*lazy BeanDescriptor*/
|
||||||
|
private static BeanDescriptor getBdescriptor(){
|
||||||
|
BeanDescriptor beanDescriptor = new BeanDescriptor ( eieruhr.Fassade.class , null ); // NOI18N//GEN-HEADEREND:BeanDescriptor
|
||||||
|
// Here you can add code for customizing the BeanDescriptor.
|
||||||
|
|
||||||
|
return beanDescriptor; }//GEN-LAST:BeanDescriptor
|
||||||
|
|
||||||
|
|
||||||
|
// Property identifiers//GEN-FIRST:Properties
|
||||||
|
private static final int PROPERTY_zahl = 0;
|
||||||
|
|
||||||
|
// Property array
|
||||||
|
/*lazy PropertyDescriptor*/
|
||||||
|
private static PropertyDescriptor[] getPdescriptor(){
|
||||||
|
PropertyDescriptor[] properties = new PropertyDescriptor[1];
|
||||||
|
|
||||||
|
try {
|
||||||
|
properties[PROPERTY_zahl] = new PropertyDescriptor ( "zahl", eieruhr.Fassade.class, "getZahl", "setZahl" ); // NOI18N
|
||||||
|
}
|
||||||
|
catch(IntrospectionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}//GEN-HEADEREND:Properties
|
||||||
|
// Here you can add code for customizing the properties array.
|
||||||
|
|
||||||
|
return properties; }//GEN-LAST:Properties
|
||||||
|
|
||||||
|
// EventSet identifiers//GEN-FIRST:Events
|
||||||
|
|
||||||
|
// EventSet array
|
||||||
|
/*lazy EventSetDescriptor*/
|
||||||
|
private static EventSetDescriptor[] getEdescriptor(){
|
||||||
|
EventSetDescriptor[] eventSets = new EventSetDescriptor[0];//GEN-HEADEREND:Events
|
||||||
|
// Here you can add code for customizing the event sets array.
|
||||||
|
|
||||||
|
return eventSets; }//GEN-LAST:Events
|
||||||
|
|
||||||
|
// Method identifiers//GEN-FIRST:Methods
|
||||||
|
private static final int METHOD_addEigenerListener0 = 0;
|
||||||
|
private static final int METHOD_addPropertyChangeListener1 = 1;
|
||||||
|
private static final int METHOD_isWarten2 = 2;
|
||||||
|
private static final int METHOD_isWeiterlaufen3 = 3;
|
||||||
|
private static final int METHOD_removeEignerListener4 = 4;
|
||||||
|
private static final int METHOD_removePropertyChangeListener5 = 5;
|
||||||
|
private static final int METHOD_setaktuelleZahl6 = 6;
|
||||||
|
private static final int METHOD_starten7 = 7;
|
||||||
|
|
||||||
|
// Method array
|
||||||
|
/*lazy MethodDescriptor*/
|
||||||
|
private static MethodDescriptor[] getMdescriptor(){
|
||||||
|
MethodDescriptor[] methods = new MethodDescriptor[8];
|
||||||
|
|
||||||
|
try {
|
||||||
|
methods[METHOD_addEigenerListener0] = new MethodDescriptor(eieruhr.Fassade.class.getMethod("addEigenerListener", new Class[] {eieruhr.TimerListener.class})); // NOI18N
|
||||||
|
methods[METHOD_addEigenerListener0].setDisplayName ( "" );
|
||||||
|
methods[METHOD_addPropertyChangeListener1] = new MethodDescriptor(java.awt.Container.class.getMethod("addPropertyChangeListener", new Class[] {java.lang.String.class, java.beans.PropertyChangeListener.class})); // NOI18N
|
||||||
|
methods[METHOD_addPropertyChangeListener1].setDisplayName ( "" );
|
||||||
|
methods[METHOD_isWarten2] = new MethodDescriptor(eieruhr.Fassade.class.getMethod("isWarten", new Class[] {})); // NOI18N
|
||||||
|
methods[METHOD_isWarten2].setDisplayName ( "" );
|
||||||
|
methods[METHOD_isWeiterlaufen3] = new MethodDescriptor(eieruhr.Fassade.class.getMethod("isWeiterlaufen", new Class[] {})); // NOI18N
|
||||||
|
methods[METHOD_isWeiterlaufen3].setDisplayName ( "" );
|
||||||
|
methods[METHOD_removeEignerListener4] = new MethodDescriptor(eieruhr.Fassade.class.getMethod("removeEignerListener", new Class[] {eieruhr.TimerListener.class})); // NOI18N
|
||||||
|
methods[METHOD_removeEignerListener4].setDisplayName ( "" );
|
||||||
|
methods[METHOD_removePropertyChangeListener5] = new MethodDescriptor(java.awt.Component.class.getMethod("removePropertyChangeListener", new Class[] {java.lang.String.class, java.beans.PropertyChangeListener.class})); // NOI18N
|
||||||
|
methods[METHOD_removePropertyChangeListener5].setDisplayName ( "" );
|
||||||
|
methods[METHOD_setaktuelleZahl6] = new MethodDescriptor(eieruhr.Fassade.class.getMethod("setaktuelleZahl", new Class[] {})); // NOI18N
|
||||||
|
methods[METHOD_setaktuelleZahl6].setDisplayName ( "" );
|
||||||
|
methods[METHOD_starten7] = new MethodDescriptor(eieruhr.Fassade.class.getMethod("starten", new Class[] {})); // NOI18N
|
||||||
|
methods[METHOD_starten7].setDisplayName ( "" );
|
||||||
|
}
|
||||||
|
catch( Exception e) {}//GEN-HEADEREND:Methods
|
||||||
|
// Here you can add code for customizing the methods array.
|
||||||
|
|
||||||
|
return methods; }//GEN-LAST:Methods
|
||||||
|
|
||||||
|
private static java.awt.Image iconColor16 = null;//GEN-BEGIN:IconsDef
|
||||||
|
private static java.awt.Image iconColor32 = null;
|
||||||
|
private static java.awt.Image iconMono16 = null;
|
||||||
|
private static java.awt.Image iconMono32 = null;//GEN-END:IconsDef
|
||||||
|
private static String iconNameC16 = null;//GEN-BEGIN:Icons
|
||||||
|
private static String iconNameC32 = null;
|
||||||
|
private static String iconNameM16 = null;
|
||||||
|
private static String iconNameM32 = null;//GEN-END:Icons
|
||||||
|
|
||||||
|
private static final int defaultPropertyIndex = -1;//GEN-BEGIN:Idx
|
||||||
|
private static final int defaultEventIndex = -1;//GEN-END:Idx
|
||||||
|
|
||||||
|
|
||||||
|
//GEN-FIRST:Superclass
|
||||||
|
// Here you can add code for customizing the Superclass BeanInfo.
|
||||||
|
|
||||||
|
//GEN-LAST:Superclass
|
||||||
|
/**
|
||||||
|
* Gets the bean's <code>BeanDescriptor</code>s.
|
||||||
|
*
|
||||||
|
* @return BeanDescriptor describing the editable properties of this bean. May
|
||||||
|
* return null if the information should be obtained by automatic analysis.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BeanDescriptor getBeanDescriptor()
|
||||||
|
{
|
||||||
|
return getBdescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the bean's <code>PropertyDescriptor</code>s.
|
||||||
|
*
|
||||||
|
* @return An array of PropertyDescriptors describing the editable properties
|
||||||
|
* supported by this bean. May return null if the information should be
|
||||||
|
* obtained by automatic analysis.
|
||||||
|
* <p>
|
||||||
|
* If a property is indexed, then its entry in the result array will belong to
|
||||||
|
* the IndexedPropertyDescriptor subclass of PropertyDescriptor. A client of
|
||||||
|
* getPropertyDescriptors can use "instanceof" to check if a given
|
||||||
|
* PropertyDescriptor is an IndexedPropertyDescriptor.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public PropertyDescriptor[] getPropertyDescriptors()
|
||||||
|
{
|
||||||
|
return getPdescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the bean's <code>EventSetDescriptor</code>s.
|
||||||
|
*
|
||||||
|
* @return An array of EventSetDescriptors describing the kinds of events
|
||||||
|
* fired by this bean. May return null if the information should be obtained
|
||||||
|
* by automatic analysis.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public EventSetDescriptor[] getEventSetDescriptors()
|
||||||
|
{
|
||||||
|
return getEdescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the bean's <code>MethodDescriptor</code>s.
|
||||||
|
*
|
||||||
|
* @return An array of MethodDescriptors describing the methods implemented by
|
||||||
|
* this bean. May return null if the information should be obtained by
|
||||||
|
* automatic analysis.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public MethodDescriptor[] getMethodDescriptors()
|
||||||
|
{
|
||||||
|
return getMdescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A bean may have a "default" property that is the property that will mostly
|
||||||
|
* commonly be initially chosen for update by human's who are customizing the
|
||||||
|
* bean.
|
||||||
|
*
|
||||||
|
* @return Index of default property in the PropertyDescriptor array returned
|
||||||
|
* by getPropertyDescriptors.
|
||||||
|
* <P>
|
||||||
|
* Returns -1 if there is no default property.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int getDefaultPropertyIndex()
|
||||||
|
{
|
||||||
|
return defaultPropertyIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A bean may have a "default" event that is the event that will mostly
|
||||||
|
* commonly be used by human's when using the bean.
|
||||||
|
*
|
||||||
|
* @return Index of default event in the EventSetDescriptor array returned by
|
||||||
|
* getEventSetDescriptors.
|
||||||
|
* <P>
|
||||||
|
* Returns -1 if there is no default event.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int getDefaultEventIndex()
|
||||||
|
{
|
||||||
|
return defaultEventIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns an image object that can be used to represent the bean
|
||||||
|
* in toolboxes, toolbars, etc. Icon images will typically be GIFs, but may in
|
||||||
|
* future include other formats.
|
||||||
|
* <p>
|
||||||
|
* Beans aren't required to provide icons and may return null from this
|
||||||
|
* method.
|
||||||
|
* <p>
|
||||||
|
* There are four possible flavors of icons (16x16 color, 32x32 color, 16x16
|
||||||
|
* mono, 32x32 mono). If a bean choses to only support a single icon we
|
||||||
|
* recommend supporting 16x16 color.
|
||||||
|
* <p>
|
||||||
|
* We recommend that icons have a "transparent" background so they can be
|
||||||
|
* rendered onto an existing background.
|
||||||
|
*
|
||||||
|
* @param iconKind The kind of icon requested. This should be one of the
|
||||||
|
* constant values ICON_COLOR_16x16, ICON_COLOR_32x32, ICON_MONO_16x16, or
|
||||||
|
* ICON_MONO_32x32.
|
||||||
|
* @return An image object representing the requested icon. May return null if
|
||||||
|
* no suitable icon is available.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public java.awt.Image getIcon(int iconKind)
|
||||||
|
{
|
||||||
|
switch (iconKind)
|
||||||
|
{
|
||||||
|
case ICON_COLOR_16x16:
|
||||||
|
if (iconNameC16 == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (iconColor16 == null)
|
||||||
|
{
|
||||||
|
iconColor16 = loadImage(iconNameC16);
|
||||||
|
}
|
||||||
|
return iconColor16;
|
||||||
|
}
|
||||||
|
case ICON_COLOR_32x32:
|
||||||
|
if (iconNameC32 == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (iconColor32 == null)
|
||||||
|
{
|
||||||
|
iconColor32 = loadImage(iconNameC32);
|
||||||
|
}
|
||||||
|
return iconColor32;
|
||||||
|
}
|
||||||
|
case ICON_MONO_16x16:
|
||||||
|
if (iconNameM16 == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (iconMono16 == null)
|
||||||
|
{
|
||||||
|
iconMono16 = loadImage(iconNameM16);
|
||||||
|
}
|
||||||
|
return iconMono16;
|
||||||
|
}
|
||||||
|
case ICON_MONO_32x32:
|
||||||
|
if (iconNameM32 == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (iconMono32 == null)
|
||||||
|
{
|
||||||
|
iconMono32 = loadImage(iconNameM32);
|
||||||
|
}
|
||||||
|
return iconMono32;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
21
EierUhr/src/eieruhr/TimerEvent.java
Normal file
21
EierUhr/src/eieruhr/TimerEvent.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* 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 eieruhr;
|
||||||
|
|
||||||
|
import java.util.EventObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Apollo
|
||||||
|
*/
|
||||||
|
public class TimerEvent extends EventObject
|
||||||
|
{
|
||||||
|
public TimerEvent(Object source)
|
||||||
|
{
|
||||||
|
super(source);
|
||||||
|
}
|
||||||
|
}
|
17
EierUhr/src/eieruhr/TimerListener.java
Normal file
17
EierUhr/src/eieruhr/TimerListener.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* 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 eieruhr;
|
||||||
|
|
||||||
|
import java.util.EventListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Apollo
|
||||||
|
*/
|
||||||
|
public interface TimerListener extends EventListener
|
||||||
|
{
|
||||||
|
public void timerabgelaufen(TimerEvent evt);
|
||||||
|
}
|
35
EierUhr/src/logger/MyFormatter/MyFormatter.java
Normal file
35
EierUhr/src/logger/MyFormatter/MyFormatter.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* 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 logger.MyFormatter;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.logging.LogRecord;
|
||||||
|
import java.util.logging.SimpleFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author nobody
|
||||||
|
*/
|
||||||
|
public class MyFormatter extends SimpleFormatter
|
||||||
|
{
|
||||||
|
private String message;
|
||||||
|
private final Date dat = new Date();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String format(LogRecord record)
|
||||||
|
{
|
||||||
|
dat.setTime(record.getMillis());
|
||||||
|
message = "| " + dat + " | " + record.getLevel() + " | "
|
||||||
|
+ record.getSourceClassName() + " | " + record.getMessage() + " |\n";
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
public MyFormatter()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
57
EierUhr/src/logger/OhmLogger.java
Normal file
57
EierUhr/src/logger/OhmLogger.java
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* 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 logger;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.logging.ConsoleHandler;
|
||||||
|
import java.util.logging.FileHandler;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import logger.MyFormatter.MyFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author nobody
|
||||||
|
*/
|
||||||
|
public class OhmLogger
|
||||||
|
{
|
||||||
|
private static Logger lg = null;
|
||||||
|
|
||||||
|
public static Logger getLogger()
|
||||||
|
{
|
||||||
|
if (lg == null)
|
||||||
|
{
|
||||||
|
lg = Logger.getLogger("OhmLogger");
|
||||||
|
initLogger();
|
||||||
|
}
|
||||||
|
return lg;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void initLogger()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
String datei = System.getProperty("java.io.tmpdir") + File.separator + "log.txt";
|
||||||
|
FileHandler fh = new FileHandler(datei);
|
||||||
|
ConsoleHandler ch = new ConsoleHandler();
|
||||||
|
lg.setUseParentHandlers(false);
|
||||||
|
lg.addHandler(fh);
|
||||||
|
ch.setFormatter(new MyFormatter());
|
||||||
|
lg.addHandler(ch);
|
||||||
|
lg.setLevel(Level.ALL);
|
||||||
|
}
|
||||||
|
catch (IOException ioex)
|
||||||
|
{
|
||||||
|
System.err.println(ioex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public OhmLogger()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
119
EierUhr/src/model/Model.java
Normal file
119
EierUhr/src/model/Model.java
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
/*
|
||||||
|
* 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 model;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author nobody
|
||||||
|
*/
|
||||||
|
public class Model extends Observable implements Runnable
|
||||||
|
{
|
||||||
|
private int zahl;
|
||||||
|
private boolean status;
|
||||||
|
private Thread thr;
|
||||||
|
private boolean notify;
|
||||||
|
private boolean schlafen;
|
||||||
|
|
||||||
|
public Model()
|
||||||
|
{
|
||||||
|
zahl = 0;
|
||||||
|
status = false;
|
||||||
|
thr = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start()
|
||||||
|
{
|
||||||
|
if (status == true)
|
||||||
|
{
|
||||||
|
//1
|
||||||
|
//notify = true;
|
||||||
|
synchronized (thr)
|
||||||
|
{
|
||||||
|
thr.notify();
|
||||||
|
schlafen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (status == false && thr == null)
|
||||||
|
{
|
||||||
|
zahl = 0;
|
||||||
|
thr = new Thread(this);
|
||||||
|
thr.start();
|
||||||
|
status = true;
|
||||||
|
notify = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
while (status == true)
|
||||||
|
{
|
||||||
|
if (schlafen == true)
|
||||||
|
{
|
||||||
|
synchronized (thr)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
thr.wait();
|
||||||
|
}
|
||||||
|
catch (InterruptedException ex)
|
||||||
|
{
|
||||||
|
JOptionPane.showMessageDialog(null, "Alles Kaputt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Zahl incrementieren
|
||||||
|
zahl--;
|
||||||
|
// Zahl ändern
|
||||||
|
if (notify == true)
|
||||||
|
{
|
||||||
|
this.setChanged();
|
||||||
|
this.notifyObservers();
|
||||||
|
}
|
||||||
|
// Zahl zurücksetzen
|
||||||
|
if (zahl == 0)
|
||||||
|
{
|
||||||
|
zahl = 10;
|
||||||
|
}
|
||||||
|
// kurze Wartezeit
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
catch (InterruptedException ex)
|
||||||
|
{
|
||||||
|
Logger.getLogger(Model.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the zahl
|
||||||
|
*/
|
||||||
|
public int getZahl()
|
||||||
|
{
|
||||||
|
return zahl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartZahl(int zahl)
|
||||||
|
{
|
||||||
|
this.zahl = zahl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void isWarten()
|
||||||
|
{
|
||||||
|
schlafen = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void isWeiterlaufen(){
|
||||||
|
schlafen = false;
|
||||||
|
}
|
||||||
|
}
|
46
EierUhr/src/view/View.form
Normal file
46
EierUhr/src/view/View.form
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||||
|
<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>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="23" max="-2" attributes="0"/>
|
||||||
|
<Component id="LblCounter" min="-2" pref="51" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="26" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="36" max="-2" attributes="0"/>
|
||||||
|
<Component id="LblCounter" min="-2" pref="38" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="38" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JLabel" name="LblCounter">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Lucida Grande" size="36" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" value="10"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
76
EierUhr/src/view/View.java
Normal file
76
EierUhr/src/view/View.java
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* 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 view;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Apollo
|
||||||
|
*/
|
||||||
|
public class View extends javax.swing.JPanel
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return the LblCounter
|
||||||
|
*/
|
||||||
|
public javax.swing.JLabel getLblCounter()
|
||||||
|
{
|
||||||
|
return LblCounter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param LblCounter the LblCounter to set
|
||||||
|
*/
|
||||||
|
public void setLblCounter(javax.swing.JLabel LblCounter)
|
||||||
|
{
|
||||||
|
this.LblCounter = LblCounter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new form view
|
||||||
|
*/
|
||||||
|
public View()
|
||||||
|
{
|
||||||
|
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()
|
||||||
|
{
|
||||||
|
|
||||||
|
LblCounter = new javax.swing.JLabel();
|
||||||
|
|
||||||
|
LblCounter.setFont(new java.awt.Font("Lucida Grande", 0, 36)); // NOI18N
|
||||||
|
LblCounter.setText("10");
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
|
this.setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(23, 23, 23)
|
||||||
|
.addComponent(LblCounter, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addContainerGap(26, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(36, 36, 36)
|
||||||
|
.addComponent(LblCounter, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addContainerGap(38, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JLabel LblCounter;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user