Hallo,
ich habe da Schwierigkeiten, die Ansicht neu zeichnen zu lassen. Dies sind die Klassen:
Theoretisch sollte das Panel für ungültig erklärt werden und dieses dann neugezeichnet werden. aber irgendwie macht er das nicht. Beim tabbedPane an andere Stelle hat es funktioniert. Wo ist mein Denkfehler?
ich habe da Schwierigkeiten, die Ansicht neu zeichnen zu lassen. Dies sind die Klassen:
Java:
public class Umrechner {
/**
*
* Startet die Anwendung
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Anzeige a= new Anzeige();
a.start();
}
}
Java:
import javax.swing.JFrame;
public class Anzeige {
/**
* stellt den Frame dar
*/
private JFrame f;
private Zeiger z;
double temperatur;
public Anzeige(){
temperatur=10.0;
}
public void start(){
System.out.println("0");
z= new Zeiger(this);
f= new JFrame("Temperaturumrechner");
f.setSize(320,320);
f.pack();
f.add(z);
f.setVisible(true);
}
public double holeTemp(){
return temperatur;
}
public void erhoehen(){
temperatur+=10.0;
}
}
Java:
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
public class KlickAction extends AbstractAction{
/**
* Klickaction
*/
private Zeiger anz;
public KlickAction(String s, Zeiger a){
super(s);
anz=a;
}
public void actionPerformed(ActionEvent ae){
System.out.println("1");
anz.erhoehen();
}
}
Java:
import java.awt.Dimension;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Zeiger extends JPanel{
/**
* Anzeigepanel
*/
private String anz;
private double temperatur;
private Anzeige a;
public Zeiger(Anzeige z){
System.out.println("4");
a=z;
temperatur= z.holeTemp();
this.setOpaque(true);
this.setPreferredSize(new Dimension(300,300));
JTextField grad= new JTextField();
anz=Double.toString(temperatur);
grad.setText(anz);
JTextField fahrenheit=new JTextField();
double fahren;
fahren=temperatur*1.8+32;
anz=Double.toString(fahren);
fahrenheit.setText(anz);
Action klick= new KlickAction("Erhoehen", this);
JButton button= new JButton(klick);
add(new JLabel("Celsius"));
add(grad);
add(new JLabel("Fahrenheit"));
add(fahrenheit);
add(button);
}
public void erhoehen(){
a.erhoehen();
System.out.println("2");
this.invalidate();
}
}