F
feeeeL
Gast
Guten Tag,
ich habe ein Problem und zwar. Ich habe eine Oberfläche mit Buttons und einem Thermometer. Wenn ich z.B. auf den Button Stufe 1 klicke, steigt das Thermometer um 2 Grad. Aber ich möchte es so hinbekommen, dass das Thermometer nach dem Buttonklick erst nach 2-3sekunden um 2 grad steigt und zwar stetig. z.B. Ich drücke STufe 1, nach 2 sek steigt das Thermometer um 2 Grad, nach 2 sek wieder, solange bis ich etwas anderes gedrückt habe.. Wie mache ich das:
Quellcode:
Hauptprogramm:
SteuerPanel:
ThermometerCanvas:
ich habe ein Problem und zwar. Ich habe eine Oberfläche mit Buttons und einem Thermometer. Wenn ich z.B. auf den Button Stufe 1 klicke, steigt das Thermometer um 2 Grad. Aber ich möchte es so hinbekommen, dass das Thermometer nach dem Buttonklick erst nach 2-3sekunden um 2 grad steigt und zwar stetig. z.B. Ich drücke STufe 1, nach 2 sek steigt das Thermometer um 2 Grad, nach 2 sek wieder, solange bis ich etwas anderes gedrückt habe.. Wie mache ich das:
Quellcode:
Hauptprogramm:
Code:
import java.awt.*;
import java.awt.event.*;
public class Hauptprogramm extends XYFrame
{
private ThermometerCanvas bc;
private SteuerPanel sp;
private int hoehe;
private String command;
public Hauptprogramm()
{
super("Thermometer");
setSize(800,600);
setLocation(50,50);
sp = new SteuerPanel();
sp.setLocation(20,100);
sp.addActionListener(this);
add(sp);
bc = new ThermometerCanvas();
bc.setLocation(200,40);
bc.setHoehe(200);
add(bc);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
Object quelle;
String command;
quelle = e.getSource();
command = e.getActionCommand();
temperatur(command);
}
private void temperatur(String command)
{
if(command.equals("Stufe1")&&bc.getHoehe()<=370)
bc.setHoehe(bc.getHoehe()+10);
else if(command.equals("Stufe2")&&bc.getHoehe()<=370)
bc.setHoehe(bc.getHoehe()+20);
else if(command.equals("Stufe3")&&bc.getHoehe()<=370)
bc.setHoehe(bc.getHoehe()+30);
else if(command.equals("Stufe4")&&bc.getHoehe()<=370)
bc.setHoehe(bc.getHoehe()+40);
else if(command.equals("Stufe5")&&bc.getHoehe()<=370)
bc.setHoehe(bc.getHoehe()+50);
else if(command.equals("FensterAuf")&&bc.getHoehe()<=370)
bc.setHoehe(bc.getHoehe()-50);
else if(command.equals("FensterZu")&&bc.getHoehe()<=370)
bc.setHoehe(bc.getHoehe()+1);
}
public static void main(String[] args)
{
new Hauptprogramm();
}
}
SteuerPanel:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
public class SteuerPanel extends XYPanel
{
Button Stufe1;
Button Stufe2;
Button Stufe3;
Button Stufe4;
Button Stufe5;
Button FensterAuf;
Button FensterZu;
Label Fenster;
Label Heizung;
ActionListener empfaenger;
int zaehler;
TextField textfield1;
Timer timer;
public SteuerPanel()
{
super();
setBackground(new Color(100,100,255));
Fenster= newLabel(15,190,60,30,"Fenster");
Heizung= newLabel(15,10,60,30,"Heizung");
Stufe1 = newButton(65,30,60,30,"Stufe1");
Stufe2 = newButton(65,60,60,30,"Stufe2");
Stufe3 = newButton(65,90,60,30,"Stufe3");
Stufe4 = newButton(65,120,60,30,"Stufe4");
Stufe5 = newButton(65,150,60,30,"Stufe5");
FensterAuf = newButton(65,220,60,30,"FensterAuf");
FensterZu = newButton(65,250,60,30,"FensterZu");
setSize(150,300);
}
private void timerTick()
{
zaehler++;
textfield1.setText("" + zaehler);
timer = new Timer(500,this);
zaehler = 0;
}
public void addActionListener(ActionListener zieladresse)
{
empfaenger = zieladresse;
}
private void Stufe1Klick()
{
ActionEvent e = new ActionEvent(this,0,"Stufe1");
empfaenger.actionPerformed(e);
}
private void Stufe2Klick()
{
ActionEvent e = new ActionEvent(this,0,"Stufe2");
empfaenger.actionPerformed(e);
}
private void Stufe3Klick()
{
ActionEvent e = new ActionEvent(this,0,"Stufe3");
empfaenger.actionPerformed(e);
}
private void Stufe4Klick()
{
ActionEvent e = new ActionEvent(this,0,"Stufe4");
empfaenger.actionPerformed(e);
}
private void Stufe5Klick()
{
ActionEvent e = new ActionEvent(this,0,"Stufe5");
empfaenger.actionPerformed(e);
}
private void FensterAufKlick()
{
ActionEvent e = new ActionEvent(this,0,"FensterAuf");
empfaenger.actionPerformed(e);
}
private void FensterZuKlick()
{
ActionEvent e = new ActionEvent(this,0,"FensterZu");
empfaenger.actionPerformed(e);
}
public void actionPerformed(ActionEvent e)
{
Object quelle = e.getSource();
if(quelle.equals(Stufe1)) Stufe1Klick();
if(quelle.equals(Stufe2)) Stufe2Klick();
if(quelle.equals(Stufe3)) Stufe3Klick();
if(quelle.equals(Stufe4)) Stufe4Klick();
if(quelle.equals(Stufe5)) Stufe5Klick();
if(quelle.equals(FensterAuf)) FensterAufKlick();
if(quelle.equals(FensterZu)) FensterZuKlick();
if (quelle.equals(timer)) timerTick();
}
}
ThermometerCanvas:
Code:
import java.awt.*;
public class ThermometerCanvas extends Canvas
{
private int hoehe;
Font schrift1, schrift2, schrift3, schrift4;
Color farbe1, farbe2, farbe3, farbe4;
public ThermometerCanvas()
{
super();
setBackground(new Color(150,150,255));
setSize(580,550);
}
public void FontTest()
{
// Schriftart und Groesse
schrift1 = new Font("Serif", Font.ITALIC, 25);
schrift2 = new Font("SansSerif", Font.PLAIN, 35);
schrift3 = new Font("Monospaced", Font.BOLD, 35);
schrift4 = new Font("Dialog", Font.BOLD + Font.ITALIC, 25);
// Farben
farbe1 = new Color(255,0,0);
farbe2 = new Color(0,255,0);
farbe3 = new Color(0,0,255);
farbe4 = new Color(200,200,0);
setVisible(true);
}
public void paint(Graphics g)
{
g.setColor(new Color(0,0,0));
g.drawLine(99, 500, 480, 500);
g.drawLine(99, 100, 99, 500);
g.drawLine(480, 100, 480, 500);
fuellen(hoehe,g);
g.setColor(farbe2);
g.setFont(schrift1);
g.drawString("Thermometer", 250, 58);
g.setColor(farbe1);
g.setFont(schrift1);
g.drawString("5 Grad", 40, 455);
g.drawString("10 Grad", 35, 405);
g.drawString("15 Grad", 35, 355);
g.drawString("20 Grad", 35, 305);
g.drawString("25 Grad", 35, 255);
g.drawString("30 Grad", 35, 205);
g.drawString("35 Grad", 35, 155);
g.drawString("40 Grad", 35, 105);
}
public void setHoehe(int hoehe)
{
this.hoehe=hoehe;
repaint();
}
public void fuellen(int hoehe, Graphics g)
{
g.setColor(new Color(255,0,0));
g.fillRect(100,500-hoehe,380,hoehe);
g.setColor(new Color(0,0,0));
g.drawLine(90,150,480,150);
g.drawLine(90,100,480,100);
g.drawLine(90,200,480,200);
g.drawLine(90,250,480,250);
g.drawLine(90,300,480,300);
g.drawLine(90,350,480,350);
g.drawLine(90,400,480,400);
g.drawLine(90,450,480,450);
g.fillOval(80,445,15,15);
g.fillOval(80,395,15,15);
g.fillOval(80,345,15,15);
g.fillOval(80,295,15,15);
g.fillOval(80,245,15,15);
g.fillOval(80,195,15,15);
g.fillOval(80,145,15,15);
g.fillOval(80,95,15,15);
}
public int getHoehe()
{
return hoehe;
}
}