Hi Leute!
Ich muss für die Schule in Partnerarbeit ein kleines Applet programmieren, das eine Digitaluhr, eine Analoguhr und einen Wecker beinhaltet. Mein Partner hat die Digitaluhr gemacht und ich die Analoguhr - hat auch bei jedem von uns problemlos funktioniert (den Wecker müssen wir noch). Als wir die Programme jedoch zusammenführen wollten, funktioniert nur eine Uhr und er wirft eine NullPointerException raus - und ich hab keine Ahnung, wieso. Wäre nett, wenn mir ihr da bei der Fehlersuche helfen könntet.
Hier ist der Code (kleiner Hinweis: die ersten 3 Textfelder sind für Eingabe von Stunde/Minute/Sekunde):
Ich muss für die Schule in Partnerarbeit ein kleines Applet programmieren, das eine Digitaluhr, eine Analoguhr und einen Wecker beinhaltet. Mein Partner hat die Digitaluhr gemacht und ich die Analoguhr - hat auch bei jedem von uns problemlos funktioniert (den Wecker müssen wir noch). Als wir die Programme jedoch zusammenführen wollten, funktioniert nur eine Uhr und er wirft eine NullPointerException raus - und ich hab keine Ahnung, wieso. Wäre nett, wenn mir ihr da bei der Fehlersuche helfen könntet.
Hier ist der Code (kleiner Hinweis: die ersten 3 Textfelder sind für Eingabe von Stunde/Minute/Sekunde):
Java:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class uhr4 extends Applet
implements ActionListener
{
private int stunde, minute, sekunde, stunde_wecker, minute_wecker;
private TextField stunde_text, minute_text, sekunde_text, stunde_wecker_text, minute_wecker_text;
private Button uhr_anzeigen, uhr_starten, uhr_stoppen, wecker_starten, wecker_stoppen;
private analoguhr tictac;
private Digitaluhr Digitalanzeige;
private Graphics j;
private AudioClip clockticking, weckersorgen;
private wecker alarm;
public void init()
{
clockticking = getAudioClip(getDocumentBase(), "clockticking.wav");
weckersorgen = getAudioClip(getDocumentBase(), "wecker.wav");
Graphics j = getGraphics();
tictac = new analoguhr(j);
Digitalanzeige = new Digitaluhr();
stunde_text = new TextField(2);
add(stunde_text);
stunde_text.addActionListener(this);
minute_text = new TextField(2);
add(minute_text);
minute_text.addActionListener(this);
sekunde_text = new TextField(2);
add(sekunde_text);
sekunde_text.addActionListener(this);
stunde_wecker_text = new TextField(2);
add(stunde_wecker_text);
stunde_wecker_text.addActionListener(this);
minute_wecker_text = new TextField(2);
add(minute_wecker_text);
minute_wecker_text.addActionListener(this);
uhr_anzeigen = new Button("Anzeigen");
add(uhr_anzeigen);
uhr_anzeigen.addActionListener(this);
uhr_starten = new Button("Start");
add(uhr_starten);
uhr_starten.addActionListener(this);
uhr_stoppen = new Button("Stop");
add(uhr_stoppen);
uhr_stoppen.addActionListener(this);
wecker_starten = new Button("Wecker-Start");
add(wecker_starten);
wecker_starten.addActionListener(this);
wecker_stoppen = new Button("Wecker-Stop");
add(wecker_stoppen);
wecker_stoppen.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == uhr_anzeigen)
{
stunde = Integer.parseInt (stunde_text.getText());
minute = Integer.parseInt (minute_text.getText());
sekunde = Integer.parseInt (sekunde_text.getText());
tictac.datenübergabe(stunde, minute, sekunde, clockticking);
tictac.anzeigen();
Digitalanzeige.datenübergabe(stunde,minute,sekunde,j);
Digitalanzeige.anzeigen();
}
if(event.getSource() == uhr_starten)
{
tictac.start();
Digitalanzeige.start();
}
if(event.getSource() == uhr_stoppen)
{
tictac.anhalten();
Digitalanzeige.anhalten();
}
}
}
class analoguhr extends Thread
{
private Graphics g;
private int zentrum, radius;
private int stunde, minute, sekunde;
private boolean running;
private AudioClip clockticking;
public analoguhr(Graphics temp)
{
g = temp;
zentrum = 400;
radius = 100;
}
public void datenübergabe(int stunde_temp, int minute_temp, int sekunde_temp, AudioClip clockticking_temp)
{
stunde = stunde_temp;
minute = minute_temp;
sekunde = sekunde_temp;
clockticking = clockticking_temp;
}
public void anzeigen()
{
g.setColor(Color.white);
g.fillRect(zentrum-radius, zentrum-radius, 2*radius, 2*radius);
g.setColor(Color.black);
g.drawOval(zentrum-2, zentrum-2,4,4);
//Viertelstriche
for (int i = 0; i < 4; i++)
{
g.drawLine(zentrum + (int) ((radius-7)*Math.cos(Math.toRadians(90*i))), zentrum + (int) ((radius-7)*Math.sin(Math.toRadians(90*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(90*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(90*i))));
}
//Stundenstriche
for (int i = 0; i < 12; i++)
{
g.drawLine(zentrum + (int) ((radius-5)*Math.cos(Math.toRadians(30*i))), zentrum + (int) ((radius-5)*Math.sin(Math.toRadians(30*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(30*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(30*i))));
}
//Minutenstriche
for(int i = 0; i < 60; i++)
{
g.drawLine(zentrum + (int) ((radius-2)*Math.cos(Math.toRadians(6*i))), zentrum + (int) ((radius-2)*Math.sin(Math.toRadians(6*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(6*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(6*i))));
}
//Stundenzeiger
g.drawLine(zentrum, zentrum, zentrum + (int) (60*Math.cos(Math.toRadians(stunde%12*30+minute/2.0-90))), zentrum + (int) (60*Math.sin(Math.toRadians(stunde%12*30+minute/2.0-90))));
//Minutenzeiger
g.drawLine(zentrum, zentrum, zentrum + (int) (85*Math.cos(Math.toRadians(minute*6-90))), zentrum + (int) (85*Math.sin(Math.toRadians(minute*6-90))));
//Sekundenzeiger
g.setColor(Color.gray);
g.drawLine(zentrum, zentrum, zentrum + (int) (90*Math.cos(Math.toRadians(sekunde*6-90))), zentrum + (int) (90*Math.sin(Math.toRadians(sekunde*6-90))));
}
public void run()
{
running = true;
while(running)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException ie )
{
System.err.print("Fehler!");
}
clockticking.play();
if(sekunde<60)
{
sekunde++;
if(sekunde==60)
{
sekunde=0;
minute++;
if(minute==60)
{
minute=0;
stunde++;
if(stunde==24)
{
stunde=0;
}
}
}
}
anzeigen();
}
}
public void anhalten()
{
running = false;
}
}
class Digitaluhr extends Thread
{
private Graphics g;
private int stunde,minute,sekunde;
private boolean b;
Font myFont = new Font("Arial", Font.ITALIC|Font.PLAIN, 60);
public Digitaluhr ()
{
}
public void datenübergabe(int stunde_a,int minute_a,int sekunde_a,Graphics j)
{
stunde=stunde_a;
minute=minute_a;
sekunde=sekunde_a;
g=j;
}
public void anzeigen ()
{
g.setFont(myFont);
g.setColor(Color.white);
g.fillRect(0,0,500,100);
g.setColor(Color.black);
if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
{
g.drawString(""+stunde,125,100);
g.drawString(":"+minute,190,100);
g.drawString(":"+sekunde,270,100);
}
}
public void run()
{
b=true;
while(b)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException ie )
{
System.err.print("Fehler!");
}
if(sekunde<60)
{
sekunde++;
if(sekunde==60)
{
sekunde=0;
minute++;
if(minute==60)
{
minute=0;
stunde++;
if(stunde==24)
{
stunde=0;
}
}
}
}
g.setColor(Color.white);
g.fillRect(0,0,500,100);
g.setColor(Color.black);
if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
{
g.setFont(myFont);
g.drawString(""+stunde,125,100);
g.drawString(":"+minute,190,100);
g.drawString(":"+sekunde,270,100);
}
}
}
public void anhalten()
{
b=false;
}
}
class wecker extends Thread
{
public wecker()
{
}
public void klingeln()
{
}
public void klingeln_stop()
{
}
}
Zuletzt bearbeitet: