Compare commits
3 Commits
master
...
TranslateO
Author | SHA1 | Date | |
---|---|---|---|
3062eb8e20 | |||
7fb3107bb5 | |||
9f880d55e2 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1 @@
|
|||||||
/build/
|
/build/
|
||||||
/dist/
|
|
||||||
|
3
Aufgabe8_Grafik2D/manifest.mf
Normal file
3
Aufgabe8_Grafik2D/manifest.mf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
X-COMMENT: Main-Class will be added automatically by build
|
||||||
|
|
2
Aufgabe8_Grafik2D/nbproject/private/private.properties
Normal file
2
Aufgabe8_Grafik2D/nbproject/private/private.properties
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
compile.on.save=true
|
||||||
|
user.properties.file=C:\\Users\\Js-Sc\\AppData\\Roaming\\NetBeans\\19\\build.properties
|
@ -12,9 +12,7 @@ import javax.swing.WindowConstants;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Programm, um mit Hilfe von Sinus und Cosinus drei sich drehende Zeiger zu
|
* @author ahren
|
||||||
* implementieren.
|
|
||||||
* @author Je-To
|
|
||||||
*/
|
*/
|
||||||
public class Start
|
public class Start
|
||||||
{
|
{
|
||||||
@ -23,6 +21,7 @@ public class Start
|
|||||||
JFrame frm = new JFrame();
|
JFrame frm = new JFrame();
|
||||||
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||||
Container c = frm.getContentPane();
|
Container c = frm.getContentPane();
|
||||||
|
|
||||||
c.setLayout(new OverlayLayout(c));
|
c.setLayout(new OverlayLayout(c));
|
||||||
for (int zeigerLaenge = 1; zeigerLaenge <=3; zeigerLaenge++)
|
for (int zeigerLaenge = 1; zeigerLaenge <=3; zeigerLaenge++)
|
||||||
{
|
{
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package aufgabe8_grafik2d;
|
package aufgabe8_grafik2d;
|
||||||
|
|
||||||
|
import aufgabe8_grafik2d.util.OhmLogger;
|
||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
@ -18,14 +19,14 @@ import java.util.concurrent.Future;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Klasse für selbst gezeichnete Zeiger, die sich über einenn eigenen Thread
|
*
|
||||||
* drehen können.
|
* @author ahren
|
||||||
* @author Je-To
|
|
||||||
*/
|
*/
|
||||||
public class Zeiger extends JComponent implements Runnable
|
public class Zeiger extends JComponent implements Runnable
|
||||||
{
|
{
|
||||||
private Logger lg = Logger.getLogger("grafik");
|
private static Logger lg = OhmLogger.getLogger();
|
||||||
private static final float DICKE = 4f;
|
private static final float DICKE = 4f;
|
||||||
private Line2D.Float linie;
|
private Line2D.Float linie;
|
||||||
private BasicStroke stift;
|
private BasicStroke stift;
|
||||||
@ -39,12 +40,12 @@ public class Zeiger extends JComponent implements Runnable
|
|||||||
private int zeigerlaenge;
|
private int zeigerlaenge;
|
||||||
private ExecutorService eService;
|
private ExecutorService eService;
|
||||||
private Future task;
|
private Future task;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialisierung des Zeigers
|
* Initialisiert einen Zeiger.
|
||||||
* @param schlafzeit = Zeit, die der Thread wartet, bevor der Zeiger sich
|
* @param schlafzeit: Ist die Zeit zwischen den Ticks
|
||||||
* wieder weiterbewegt
|
* @param zeigerlaenge: Ist die länge des Zeigers
|
||||||
* @param zeigerlaenge = verhältnismäßige Zeigerlänge
|
|
||||||
*/
|
*/
|
||||||
public Zeiger(long schlafzeit, int zeigerlaenge)
|
public Zeiger(long schlafzeit, int zeigerlaenge)
|
||||||
{
|
{
|
||||||
@ -57,17 +58,15 @@ public class Zeiger extends JComponent implements Runnable
|
|||||||
task = null;
|
task = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Thread für das Ändern des Winkels
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
float delta = 1f;
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
synchronized(this)
|
synchronized(this)
|
||||||
{
|
{
|
||||||
alpha += 0.08;
|
alpha += 0.1;
|
||||||
}
|
}
|
||||||
this.repaint();
|
this.repaint();
|
||||||
try
|
try
|
||||||
@ -83,44 +82,39 @@ public class Zeiger extends JComponent implements Runnable
|
|||||||
|
|
||||||
public void start()
|
public void start()
|
||||||
{
|
{
|
||||||
|
lg.info("Zeiger "+ this.zeigerlaenge+ " startet");
|
||||||
if (task == null)
|
if (task == null)
|
||||||
{
|
{
|
||||||
task = eService.submit(this);
|
task = eService.submit(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Zeichnen des Zeigers abhängig vom Winkel Alpha
|
|
||||||
* @param g
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void paintComponent(Graphics g)
|
public void paintComponent(Graphics g)
|
||||||
{
|
{
|
||||||
super.paintComponent(g);
|
super.paintComponent(g);
|
||||||
Graphics2D g2 = (Graphics2D)g;
|
Graphics2D g2 = (Graphics2D)g;
|
||||||
|
|
||||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||||
|
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||||
|
|
||||||
float breite = this.getWidth() - 1;
|
float breite = this.getWidth() - 1;
|
||||||
float hoehe = this.getHeight() - 1;
|
float hoehe = this.getHeight() - 1;
|
||||||
|
|
||||||
radius = (min(hoehe, breite)/2 * 0.9) * 1/ zeigerlaenge;
|
radius = (min(hoehe, breite)/2 * 0.9) * 1/ zeigerlaenge;
|
||||||
|
|
||||||
xMitte = breite/2;
|
g2.translate(breite/2, hoehe/2);
|
||||||
yMitte = hoehe/2;
|
g2.rotate(alpha);
|
||||||
|
|
||||||
synchronized(this)
|
|
||||||
{
|
xAussen = radius;
|
||||||
xAussen = xMitte +cos(2*PI*alpha) * radius;
|
yAussen = 0;
|
||||||
yAussen = yMitte + sin(2*PI*alpha) * radius;
|
|
||||||
}
|
linie.setLine(0, 0, xAussen, yAussen);
|
||||||
|
|
||||||
linie.setLine(xMitte, yMitte, xAussen, yAussen);
|
|
||||||
|
|
||||||
g2.setStroke(stift);
|
g2.setStroke(stift);
|
||||||
g2.setPaint(Color.RED);
|
g2.setPaint(Color.RED);
|
||||||
g2.draw(linie);
|
g2.draw(linie);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
111
src/aufgabe8_grafik2d/util/OhmLogger.java
Normal file
111
src/aufgabe8_grafik2d/util/OhmLogger.java
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
package aufgabe8_grafik2d.util;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.Set;
|
||||||
|
//import java.util.Properties;
|
||||||
|
import java.util.logging.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Klasse zur eigens konfigurierten Log-Ausgabe in der Console
|
||||||
|
* @author ahrens
|
||||||
|
*/
|
||||||
|
public class OhmLogger
|
||||||
|
{
|
||||||
|
private static final String LOGGER_NAME = "OhmLogger";
|
||||||
|
private static Logger lg = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* privater Konstrukter -> Singleton
|
||||||
|
*/
|
||||||
|
private OhmLogger()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Public Method zum Erstellen des Loggers und zum Aufruf der Methode
|
||||||
|
* zum Initialisieren
|
||||||
|
* @return Referenz auf Logger
|
||||||
|
*/
|
||||||
|
public static Logger getLogger()
|
||||||
|
{
|
||||||
|
if (lg == null)
|
||||||
|
{
|
||||||
|
lg = Logger.getLogger(LOGGER_NAME);
|
||||||
|
initLogger();
|
||||||
|
}
|
||||||
|
return lg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode zum Initialisieren, Suchen der Konfigurationsdatei, Anlegen eines
|
||||||
|
* neuen Console Handlers, Löschen der bisherigen Standard Handler und
|
||||||
|
* Einfügen des eigenen Handler, Setzen des Levels, je nach Properties
|
||||||
|
*/
|
||||||
|
private static void initLogger()
|
||||||
|
{
|
||||||
|
try (InputStream configFile = OhmLogger.class.getClassLoader().getResourceAsStream("config.properties")) {
|
||||||
|
if (configFile != null) {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
properties.load(configFile);
|
||||||
|
java.util.logging.Level classLogLevel = java.util.logging.Level.parse(properties.getProperty("log.level"));
|
||||||
|
|
||||||
|
|
||||||
|
ConsoleHandler ch = new ConsoleHandler();
|
||||||
|
ch.setFormatter(new OhmFormatter());
|
||||||
|
lg.setUseParentHandlers(false);
|
||||||
|
lg.getHandlers();
|
||||||
|
lg.addHandler(ch);
|
||||||
|
|
||||||
|
|
||||||
|
lg.setLevel(classLogLevel);
|
||||||
|
|
||||||
|
String logDirectory = properties.getProperty("log.directory");
|
||||||
|
String logFileName = properties.getProperty("log.filename");
|
||||||
|
|
||||||
|
FileHandler fileHandler = new FileHandler(logDirectory + "/" + logFileName, true);
|
||||||
|
fileHandler.setFormatter(new OhmFormatter());
|
||||||
|
lg.addHandler(fileHandler);
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
System.err.println("Unable to find config.properties file. OhmLogger will use default settings.");
|
||||||
|
}
|
||||||
|
} catch (IOException | SecurityException e) {
|
||||||
|
System.err.println("Error configuring OhmLogger: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Klasse zum Setzen des Formates des Auszugebenden Log-Strings
|
||||||
|
* @author ahren
|
||||||
|
*/
|
||||||
|
class OhmFormatter extends Formatter
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public String format(LogRecord record)
|
||||||
|
{
|
||||||
|
String logline = "| ";
|
||||||
|
|
||||||
|
LocalDateTime ldt = LocalDateTime.now();
|
||||||
|
logline += ldt.toString();
|
||||||
|
logline += " | " + record.getLevel();
|
||||||
|
logline += " | " + record.getSourceClassName();
|
||||||
|
logline += " | " + record.getMessage();
|
||||||
|
logline += " |\n";
|
||||||
|
|
||||||
|
return logline;
|
||||||
|
}
|
||||||
|
}
|
8
src/config.properties
Normal file
8
src/config.properties
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
log.level=INFO
|
||||||
|
|
||||||
|
log.directory=../Aufgabe7_bandit
|
||||||
|
log.filename=ohmLog
|
||||||
|
|
||||||
|
# Beispiel f\u00fcr verschiedene Level f\u00fcr unterschiedliche Pakete
|
||||||
|
# log.level.bandit.Zahlengenerator=FINE
|
||||||
|
# log.level.bandit.Model.Wuerfel=WARNING
|
Loading…
x
Reference in New Issue
Block a user