G
G78073/-
Gast
Hallo,
ich habe folgende Probleme mit der Anzeige in einem JTextField.
Der Benutzer füllt zwei Felder aus. Das Programm erkennt welche es sind und berechnet das dritte.
Wenn ich z.B. für Bildgröße 25 und Gegenstandsgröße 55 eingebe bekomme ich 24.75 und 55.00.
Warum ändern sich die eingegebenen Werte?
"Eigentlich" verändere ich doch immer nur ein Textfeld mit setText() nämlich das was berechnet werden soll.
Warum verändert das Programm alle drei Textfelder?
Nach der if-Anweisung ist doch Schluß!
Eine weitere Sache ist wenn ich für Bildgröße 4 und Gegenstandsgröße 5555 eingebe bekomme ich folgende Fehlermeldung
und für Bildgröße 0.0, Gegenstandsgröße 5555 und Abbildungsmaßstab 0.0 angezeigt.
Mit System.out.println funktioniert es einwandfrei!
Woran kann das liegen?
Denke das dieser Fehler mit dem ersten in Verbindung steht?!
Grüße
ich habe folgende Probleme mit der Anzeige in einem JTextField.
Der Benutzer füllt zwei Felder aus. Das Programm erkennt welche es sind und berechnet das dritte.
Wenn ich z.B. für Bildgröße 25 und Gegenstandsgröße 55 eingebe bekomme ich 24.75 und 55.00.
Warum ändern sich die eingegebenen Werte?
"Eigentlich" verändere ich doch immer nur ein Textfeld mit setText() nämlich das was berechnet werden soll.
Warum verändert das Programm alle drei Textfelder?
Nach der if-Anweisung ist doch Schluß!
Eine weitere Sache ist wenn ich für Bildgröße 4 und Gegenstandsgröße 5555 eingebe bekomme ich folgende Fehlermeldung
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: Infinite or NaN
at java.math.BigDecimal.<init>(BigDecimal.java:797)
at Abbildungsmassstab.actionPerformed(Abbildungsmassstab.java:103)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
.
.
usw.
.
.
und für Bildgröße 0.0, Gegenstandsgröße 5555 und Abbildungsmaßstab 0.0 angezeigt.
Mit System.out.println funktioniert es einwandfrei!
Woran kann das liegen?
Denke das dieser Fehler mit dem ersten in Verbindung steht?!
Grüße
Java:
import formelsammlung.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.math.BigDecimal;
public class Abbildungsmassstab extends JFrame implements ActionListener{
JTextField text1, text2, text3;
JLabel lable1, lable2, lable3;
JButton ok, lo;
String b, g, ß;
double gg, bb, ßß, wert;
BigDecimal wert1, setScale;
public Abbildungsmassstab(String title){
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLocation(500, 300);
setLayout( new GridLayout(4, 2, 20, 5) );
lable1 = new JLabel("Bildgröße:");
add(lable1);
text1 = new JTextField();
text1.setName("b");
add(text1);
lable2 = new JLabel("Gegensgröße:");
add(lable2);
text2 = new JTextField();
text2.setName("g");
add(text2);
lable3 = new JLabel("Abbildungsmaßstab");
add(lable3);
text3 = new JTextField();
text3.setName("f");
add(text3);
ok = new JButton ("Berechnen");
ok.setName("ok");
ok.addActionListener(Abbildungsmassstab.this);
add(ok);
lo = new JButton ("Löschen");
lo.setName("lo");
lo.addActionListener(Abbildungsmassstab.this);
add(lo);
pack();
setVisible( true );
}
@Override
public void actionPerformed(ActionEvent event){
// erste Abfrage wenn der Berechnen Button gedrückt wird
if ("Berechnen".equals(event.getActionCommand())){
// Abfrage ob alle Felder leer sind wenn das der Fall ist erscheint ein JDialog
if (text1.getText().isEmpty() == true && text2.getText().isEmpty() == true && text3.getText().isEmpty() == true){
JDialog dia = new JDialog(this, "Falsche Eingabe");
dia.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
dia.setResizable(false);
dia.setLocation(500, 300);
dia.setSize(300, 100);
dia.setVisible(true);
}
// Abfrage wenn alle Felder gefüllt sind werden alle Feder gelöscht mit ""
if (text1.getText().isEmpty() == false && text2.getText().isEmpty() == false && text3.getText().isEmpty() == false){
text1.setText("");
text2.setText("");
text3.setText("");
}
// Abfrage welche der Felder ausgefüllt sind wird das leere Feld gefüllt.
if (text1.getText().isEmpty() == false && text2.getText().isEmpty() == false){
b = text1.getText();
bb = Double.parseDouble(b);
g = text2.getText();
gg = Double.parseDouble(g);
wert = Geometrischeoptik.calcAbbildungsmaßstab(bb, gg);
wert1 = new BigDecimal(wert);
setScale = wert1.setScale(2, BigDecimal.ROUND_HALF_UP);
text3.setText(String.valueOf(setScale)); // hier wird das leere Feld gefüllt
} // hier sollte doch die if-Anweisung zu Ende sein und das Programm von "neu Beginnen", oder?!
// Abfrage welche der Felder ausgefüllt sind wird das leere Feld gefüllt.
if (text2.getText().isEmpty() == false && text3.getText().isEmpty() == false){
g = text2.getText();
gg = Double.parseDouble(g);
ß = text3.getText();
ßß = Double.parseDouble(ß);
wert = Geometrischeoptik.calcBildgroeße(ßß, gg);
wert1 = new BigDecimal(wert);
setScale = wert1.setScale(2, BigDecimal.ROUND_HALF_UP);
text1.setText(String.valueOf(setScale)); // hier wird das leere Feld gefüllt
} // Ende
// Abfrage welche der Felder ausgefüllt sind wird das leere Feld gefüllt.
if (text1.getText().isEmpty() == false && text3.getText().isEmpty() == false){
b = text1.getText();
bb = Double.parseDouble(b);
ß = text3.getText();
ßß = Double.parseDouble(ß);
wert = Geometrischeoptik.calcGegenstandsgroeße(bb, ßß);
wert1 = new BigDecimal(wert);
setScale = wert1.setScale(2, BigDecimal.ROUND_HALF_UP);
text2.setText(String.valueOf(setScale)); // hier wird das leere Feld gefüllt
} // Ende
}
// Abfrage Löschen Button werden alle Felder gelöscht
if("Löschen".equals(event.getActionCommand())){
text1.setText("");
text2.setText("");
text3.setText("");
}
}
public static void main(String[] args) {
Abbildungsmassstab abbildungsmassstab = new Abbildungsmassstab("Abbildungsmaßstab");
}
}
Java:
public class Geometrischeoptik {
// Die Elemente der Abbildungsgleichung
// Bildweite
public static double calcBildweite(double g, double f){
double bildw = (g * f)/(g - f);
return bildw;
}
// Gegenstandsweite
public static double calcGegenstandsweite(double f, double b){
double gegen = (f * b)/(b - f);
return gegen;
}
// Brennweite
public static double calcBrenweite(double g, double b){
double brenn = (g * b)/(g + b);
return brenn;
}
// Die Elemente des Abbildungsmaßstabes
// Abbildungsmaßstab
public static double calcAbbildungsmaßstab(double bi, double ge){
double abb = bi/ge;
return abb;
}
// Bildgroeße
public static double calcBildgroeße(double beta, double ge){
double bild = beta*ge;
return bild;
}
// Gegenstandsgroeße
public static double calcGegenstandsgroeße(double bi, double beta){
double g = bi/beta;
return g;
}
}