Hallo,
bin neu hier im Forum und bin kein "Profi" im programmieren. Ich versuch mich gerade an der paint / paintComponent Methode -(gibt es da nen Unterschied)- komme allerdings nicht weiter.
Und zwar habe ich quasi einen Zeiger einer Uhr programmiert, der in einer externen Klasse "berechnet" wird und mit Hilfe der Koordinaten dann gezeichnet wird.
Allerdings kann ich keine zwei Zeiger anzeigen lassen, da das erste immer verschwindet.
Ich könnte auch zwei Zeiger programmieren aber da das Projekt noch größer werden soll muss ich später sowieso noch mehrere Uhren erstellen, also will ich das Problem erstmal lösen.
Ich hab mehrere Theorien wieso das erste verschwindet:
1: Das zweite Überdeckt das erste komplett.
2: Wenn ich das erste Objekt dem JFrame hinzufüge kann kein zweites hinzugefügt werden.
3: paint zeichnet nur den letzten Befehl. Ich habe aber zwei Objekte vom Typ Uhr erstellt, deswegen dachte ich, dass er dann beide zeichnen wird
Wahrscheinlich ist es nen Denkfehler irgendwo. Oder vielleicht auch was grundlegendes was ich falsch mache.
Hoffe es kann jemand helfen
bin neu hier im Forum und bin kein "Profi" im programmieren. Ich versuch mich gerade an der paint / paintComponent Methode -(gibt es da nen Unterschied)- komme allerdings nicht weiter.
Und zwar habe ich quasi einen Zeiger einer Uhr programmiert, der in einer externen Klasse "berechnet" wird und mit Hilfe der Koordinaten dann gezeichnet wird.
Allerdings kann ich keine zwei Zeiger anzeigen lassen, da das erste immer verschwindet.
Ich könnte auch zwei Zeiger programmieren aber da das Projekt noch größer werden soll muss ich später sowieso noch mehrere Uhren erstellen, also will ich das Problem erstmal lösen.
Ich hab mehrere Theorien wieso das erste verschwindet:
1: Das zweite Überdeckt das erste komplett.
2: Wenn ich das erste Objekt dem JFrame hinzufüge kann kein zweites hinzugefügt werden.
3: paint zeichnet nur den letzten Befehl. Ich habe aber zwei Objekte vom Typ Uhr erstellt, deswegen dachte ich, dass er dann beide zeichnen wird
Wahrscheinlich ist es nen Denkfehler irgendwo. Oder vielleicht auch was grundlegendes was ich falsch mache.
Java:
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class Hour
{
static JFrame frm;
static Dimension dim;
Uhr u1 = new Uhr(50, 50, 1, 30);
Uhr u2 = new Uhr(100, 100, 15, 15);
public Hour()
{
frm.add(u1);
frm.add(u2);
}
public static void main(String[] args)
{
dim = Toolkit.getDefaultToolkit().getScreenSize();
frm = new JFrame();
frm.setSize(200, 200);
frm.setLocation(dim.width/2 - frm.getSize().width/2, dim.height/2 - frm.getSize().height/2);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
new Hour();
}
}
Java:
import java.awt.Graphics;
import javax.swing.JPanel;
public class Uhr extends JPanel
{
private long clockspd = 100;
private int x = 50 ,y = 50;
private int nx = 50 ,ny = 50;
double angle = 0, length = 0;
public Uhr(int px, int py, double pangle, double plength)
{
x = px;
y = py;
angle = pangle;
length = plength;
Thread thread = new Thread()
{
public void run()
{
action();
}
};
thread.start();
}
public void action()
{
for(int i=0; i<20; i++)
{
new Calc(this, angle*i, length);
nx = (int)Calc.bx;
ny = (int)Calc.by;
try {
Thread.sleep(clockspd);
}
catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
repaint();
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawLine(x, y, x+nx, y+ny); //0, -30
}
public int getXCoor()
{
return x;
}
public int getYCoor()
{
return y;
}
}
Java:
public class Calc
{
static double bx = 0;
static double by = 0;
public Calc(Uhr u, double angle, double length)
{
if(angle <= 180)
{
by = -length * Math.cos(Math.toRadians(angle));
bx = Math.sqrt(Math.pow(length, 2)-Math.pow(by, 2));
}
if(angle > 180)
{
by = -length * Math.cos(Math.toRadians(angle));
bx = -Math.sqrt(Math.pow(length, 2)-Math.pow(by, 2));
}
}
}
Hoffe es kann jemand helfen