G
Guest
Gast
Ich habe folgendes Problem mit dem dem Dialog:
ich habe eine get-Funktion geschrieben, die den aktuellen Wert des JSpinners nach den Schliessen des Fensters den Hauptprogramm zur Verfügung stellen soll. Dies funktioniert leider nicht, es wird ein falscher Wert angezeigt. Des weiteren funktioniert das statechanged - Ereignis nicht richtig - es sollte eigentlich eine Dezimalzahl mit genau einer Nachkommestelle angezeigt werden. Was ist falsch?
Hier die Klasse Jspinn
Hier die Klasse Test
Output
Value nach Schliessen:0.4
wert changelistener 0.5
wert changelistener 0.6
wert changelistener 0.7
wert changelistener 0.7999999999999999
wert changelistener 0.8
wert changelistener 0.9
wert changelistener 1.0
wert changelistener 1.1
wert bei windowclosing:1.1
[Edit by Beni: lern bitte schnellstens Code übersichtlich zu schreiben... Einrückungen! Ein Befehl pro Zeile!]
ich habe eine get-Funktion geschrieben, die den aktuellen Wert des JSpinners nach den Schliessen des Fensters den Hauptprogramm zur Verfügung stellen soll. Dies funktioniert leider nicht, es wird ein falscher Wert angezeigt. Des weiteren funktioniert das statechanged - Ereignis nicht richtig - es sollte eigentlich eine Dezimalzahl mit genau einer Nachkommestelle angezeigt werden. Was ist falsch?
Hier die Klasse Jspinn
Code:
import java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.*;//ChangeListenerimport
import javax.swing.*;//JFrame, JPanel,JSpinner
public class Jspinn extends JDialog{
private double value=0.4;
private double startwert=0.4;
SpinnerNumberModel a = null;
JSpinner s = null;
Jspinn(double st){
if ((Math.abs(st)>=0.4) &&(Math.abs(st)<=1000)){
startwert = Math.abs(startwert);
}
init_common();
}
Jspinn(){
init_common();
}
private void init_common(){
a = new SpinnerNumberModel(startwert, 0.4, 1000, 0.1);
s = new JSpinner(a);
s.addChangeListener(new Listener ());setTitle("test JSpinner");
setSize(100,200);
Container c = getContentPane();
JPanel p = new JPanel();
p.add(s);
c.add(p);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
setVisible(false);
System.out.println("wert bei windowclosing:" + value);
hide();
}
});
}
double get_value(){
return value;
}
double get_startwert(){
return startwert;
}
class Listener implements ChangeListener{
public void stateChanged(ChangeEvent e){
String erg="";
erg = s.getValue().toString();
value = Double.parseDouble(erg);
System.err.println("wert changelistener " + value );
}
}
}
Code:
public class Test{
public static void main(String[] args){
Jspinn a = new Jspinn();
a.show();
System.out.println("Value nach Schliessen:" + a.get_value());
}
}
Value nach Schliessen:0.4
wert changelistener 0.5
wert changelistener 0.6
wert changelistener 0.7
wert changelistener 0.7999999999999999
wert changelistener 0.8
wert changelistener 0.9
wert changelistener 1.0
wert changelistener 1.1
wert bei windowclosing:1.1
[Edit by Beni: lern bitte schnellstens Code übersichtlich zu schreiben... Einrückungen! Ein Befehl pro Zeile!]