Compare commits

...

3 Commits

Author SHA1 Message Date
ahren
f3c3dc5fc0 javadoc 2023-11-27 12:20:52 +01:00
ahren
2398e3c8a4 kleine verschönerungen2 2023-11-27 12:07:12 +01:00
ahren
416f890de2 kleine verschönerungen 2023-11-27 12:04:57 +01:00
3 changed files with 34 additions and 17 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/build/ /build/
/dist/

View File

@ -12,7 +12,9 @@ import javax.swing.WindowConstants;
/** /**
* *
* @author ahren * Programm, um mit Hilfe von Sinus und Cosinus drei sich drehende Zeiger zu
* implementieren.
* @author Je-To
*/ */
public class Start public class Start
{ {
@ -21,7 +23,6 @@ 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++)
{ {

View File

@ -15,18 +15,21 @@ import static java.lang.Math.*;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.Future; import java.util.concurrent.Future;
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
* @author ahren * drehen können.
* @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 final float DICKE = 4f; private static final float DICKE = 4f;
private Line2D.Float linie; private Line2D.Float linie;
private BasicStroke stift; private BasicStroke stift;
private volatile float radius; private volatile double radius;
private volatile float xMitte; private volatile float xMitte;
private volatile float yMitte; private volatile float yMitte;
private volatile double xAussen; private volatile double xAussen;
@ -37,6 +40,12 @@ public class Zeiger extends JComponent implements Runnable
private ExecutorService eService; private ExecutorService eService;
private Future task; private Future task;
/**
* Initialisierung des Zeigers
* @param schlafzeit = Zeit, die der Thread wartet, bevor der Zeiger sich
* wieder weiterbewegt
* @param zeigerlaenge = verhältnismäßige Zeigerlänge
*/
public Zeiger(long schlafzeit, int zeigerlaenge) public Zeiger(long schlafzeit, int zeigerlaenge)
{ {
this.schlafzeit = schlafzeit; this.schlafzeit = schlafzeit;
@ -48,17 +57,17 @@ 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.1; alpha += 0.08;
xAussen = xMitte +cos(2*PI*alpha) * radius;
yAussen = yMitte + sin(2*PI*alpha) * radius;
} }
this.repaint(); this.repaint();
try try
@ -67,7 +76,7 @@ public class Zeiger extends JComponent implements Runnable
} }
catch (Exception ex) catch (Exception ex)
{ {
//lg.severe(ex.toString()); lg.severe(ex.toString());
} }
} }
} }
@ -79,25 +88,32 @@ public class Zeiger extends JComponent implements Runnable
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, g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
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;
float radius = (min(hoehe, breite)/2 - 50) * 1/ zeigerlaenge;
xMitte = breite/2; xMitte = breite/2;
yMitte = hoehe/2; yMitte = hoehe/2;
synchronized(this)
{
xAussen = xMitte +cos(2*PI*alpha) * radius; xAussen = xMitte +cos(2*PI*alpha) * radius;
yAussen = yMitte + sin(2*PI*alpha) * radius; yAussen = yMitte + sin(2*PI*alpha) * radius;
}
linie.setLine(xMitte, yMitte, xAussen, yAussen); linie.setLine(xMitte, yMitte, xAussen, yAussen);
@ -105,7 +121,6 @@ public class Zeiger extends JComponent implements Runnable
g2.setPaint(Color.RED); g2.setPaint(Color.RED);
g2.draw(linie); g2.draw(linie);
} }
} }