JSpinner, setValue

mla.rue

Bekanntes Mitglied
Ich habe hier einen Fehler (logischen?) der nicht vom Compiler angezeigt wird, die Anwendung funktioniert auch bis auf einen Fall. Die Anwendung: ein Hauptfenster, das hat unter anderem einen Schalter, der ein modales Dialogfenster aufruft. Dieses wiederum hat unter anderem einen JSpinner, mit dem sich Kalenderwochen einstellen lassen.

1) wird die Anwendung (kalender.jar) mit einem Mausklick gestartet (Doppelklick in Windows, Einfach bzw DOppelklick Linux auf die .jar Datei), wird das Programm ausgeführt (Hauptfenster angezeigt), der entsprechende KW Auswahldialog allerdings nicht (kommentiere ich in der Dialog-Klasse die Zeile jspinnerKW.setValue(iWoche+". KW"); aus, funktioniert es

2) wird die Anwendung über eine Konsole gestartet (Aufruf: java -jar kalender.jar) funktioniert die Anwendung problemlos

3) wird die Anwendung über ein Script gestartet (das nur die Zeile java -jar kalender.jar beinhaltet), funktioniert die Anwendung problemlos

4) aus der IDE (Eclipse) funktioniert die Anwendung problemlos

da es sich doch um ziemlich viel Code handelt, hier nur der Auszug betreffend meinen JSpinner:

Java:
iAnzWochen = clsDZ.getNumberOfWeeks(iJahr);
iWoche = clsDZ.getCurrentWeek(iJahr);
for (int i = 0; i < iAnzWochen; i++) {
    listKW.add((i + 1) + ". KW");
}

SpinnerListModel slm = new SpinnerListModel(listKW);
jspinnerKW.setModel(slm);
jspinnerKW.setValue(iWoche + ". KW");

WIe gesagt funktioniert das Programm "die meiste Zeit", es ist zwar kein Problem das Programm über eine Script Datei zu starten, hätte dann aber doch gerne einen funktionierenden Mausklick :). Evtl gibt es mit setValue beim JSPinner irgendeinen Trick (oder Bug?) den ich noch nicht kenne, oder ich sehe den Wald vor lauten Bäumen nicht.

PS: kein Experte, vor 3 Monaten mit Java angefangen
edit: Schreibfehler im Code korrigiert (SpinnerListModel(listKW))
 
Zuletzt bearbeitet von einem Moderator:
C

Camino

Gast
Wird denn auch keine Fehlermeldung ausgegeben? Ansonsten einfach mal ein paar Testausgaben auf der Konsole machen.
Ich bin mir auch nicht sicher, ob man sich beim JSpinner nicht erst noach das Model holen muss, also etwa so:
Java:
jspinnerKW.getModel().setValue(iWoche + ". KW");
 

mla.rue

Bekanntes Mitglied
@ Camino: eben keine Fehlermeldung, das mit .getModel war mein erster Gedanke, gleiches Ergebnis wie im Normalfall

@Volvagia: unter Linux gibt es standardmässig wohl kein javaw und gerade habe ich keinen Zugriff mehra uf eine Windows Kiste, mal schauen wenn ich Daheim bin
 

bERt0r

Top Contributor
Dein Problem ist folgendes: Du gibst deinem Model eine Liste Strings. Wenn du jetzt setValue aufrufst, akzeptiert diese Funktion nur einen der Strings, die du in deinem Model hast. Du baust mit iWoche + ". KW" aber einen neuen String. Auch wenn der genauso aussehen mag wie einer der in deiner Liste ist, ist es doch ein anderes String Objekt.
Ich würde deinem Spinner einfach ein NumberModel geben und noch einen Editor schreiben, der dir das . KW hinten dranhängt.
Beispiel gibts z.B hier: Customizing the Editor in a JSpinner Component | Example Depot
 
Zuletzt bearbeitet:

mla.rue

Bekanntes Mitglied
Klingt ersteinmal logisch, ist aber trotzdem komisch. Bei einer Kombobox kann man auch mit jcombobox.setSelectedValue(Object) einen Wert zuweisen (auch wenn dieses Object ein anderes ist als das, was gerade in der Kombohox "abhängt"), ohne Probleme. Wieso soll sich da ein JSpinner anders verhalten? Hm.

Habe ersteinmal die einfachere Variante versucht, ich merke mir den Index der aktuellen Woche in meiner Liste und übergebe dann die, wie schon zuvor funktioniert alles einwandfrei, bis auf Variente 1 der Ausführung.

Java:
for (int i = 0; i < iAnzWochen; i++) {
     listKW.add((i + 1) + ". KW");
     if((i+1) == iWoche){
          n = i;    
     }
}
 
SpinnerListModel slm = new SpinnerListModel(listKW);
jspinnerKW.setModel(slm);
jspinnerKW.getModel().setValue(listKW.get(n));
//slm.setValue(listKW.get(n));

Ich werde es jetzt ersteinmal noch mit dem Editor versuchen, habe ich gestern schon angetestet, nur wurde mir da immer der Punkt zu einem Komma umgewandelt.
 

bERt0r

Top Contributor
Mein Link war vielleicht nicht ganz optimal, weil da mit einem Panel gearbeitet wird. Am einfachsten gehts, wenn dein Editor von einem JLabel erbt. Der Name Editor ist auch ziemlich irreführend, bei Lists und Tables wird sowas Renderer genannt und ein Editor macht ganz was anderes.
Java:
public class Editor extends JLabel implements ChangeListener {

        Editor(JSpinner spinner) {
            // Add the listener
            spinner.addChangeListener(this);
        }

        // Handles changes to the value stored in the model
        public void stateChanged(ChangeEvent evt) {
            JSpinner spinner = (JSpinner)evt.getSource();

            // Get the new value
            Object value = spinner.getValue();
            this.setText(value+". KW");
        }
 
Zuletzt bearbeitet:

mla.rue

Bekanntes Mitglied
ist das nicht wie mit Kanonen auf Spatzen schießen? Da hat der JSPinner 1-52/53 und drüber wird der Editor mit formatiertem x. KW gestülpt ... mh, etwas extrem wie ich finde :). Aber einen Test wert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N JDK1.4- Überladen d. Methoden getValue setValue von JSpinner AWT, Swing, JavaFX & SWT 2
D TAB Taste innerhalb eines JSpinner AWT, Swing, JavaFX & SWT 2
C JSpinner AWT, Swing, JavaFX & SWT 6
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
K Swing JSpinner mit NULL AWT, Swing, JavaFX & SWT 3
V LookAndFeel JSpinner Hintergrund Farbe mit Nimbus LaF AWT, Swing, JavaFX & SWT 0
R Int aus JSpinner auslesen und Tabelle erstellen AWT, Swing, JavaFX & SWT 3
K JSpinner in passender Breite erstellen oder automatisch anpassen AWT, Swing, JavaFX & SWT 2
D JCheckbox und JSpinner in JTable AWT, Swing, JavaFX & SWT 9
N Swing JSpinner mit Datum aber ohne Uhrzeit AWT, Swing, JavaFX & SWT 2
J Swing JSpinner mit zusätzlichem Text? AWT, Swing, JavaFX & SWT 2
B JSpinner ChangeEvent erzwingen AWT, Swing, JavaFX & SWT 6
B JSpinner Textgröße anpassen AWT, Swing, JavaFX & SWT 2
B JSpinner welche Taste? AWT, Swing, JavaFX & SWT 5
B JSpinner Enter AWT, Swing, JavaFX & SWT 7
G JSpinner ohne Tausendertrennzeichen AWT, Swing, JavaFX & SWT 5
N Wertanzeige mittels JSpinner AWT, Swing, JavaFX & SWT 3
S JSpinner AWT, Swing, JavaFX & SWT 11
G Swing JSpinner nur mit Buttons ändern AWT, Swing, JavaFX & SWT 8
T JSpinner in JTable: Problem beim Auslesen, funktioniert erst beim Zellwechsel AWT, Swing, JavaFX & SWT 7
T Swing JSpinner in JTable AWT, Swing, JavaFX & SWT 9
C Größe von JSpinner fixieren AWT, Swing, JavaFX & SWT 4
J JSpinner + SpinnerNumberModel int auslesen AWT, Swing, JavaFX & SWT 2
C Zwei JSpinner mit dem gleichen Wert AWT, Swing, JavaFX & SWT 2
Eldorado Swing Popup-Menü mit Jspinner AWT, Swing, JavaFX & SWT 4
X Den Wert von JSpinner setzen ohne Event AWT, Swing, JavaFX & SWT 3
M JSpinner als TableCellEditor; buttons nur bei fokus sichtbar AWT, Swing, JavaFX & SWT 14
M JSpinner Font ändern AWT, Swing, JavaFX & SWT 4
Spin JSpinner AWT, Swing, JavaFX & SWT 10
T JSpinner, 3 JSpinner aber nur ein SpinnerDateModel AWT, Swing, JavaFX & SWT 7
S JSpinner der Floats anzeigt..? AWT, Swing, JavaFX & SWT 4
D Swing Eigene Komponente mit JSpinner AWT, Swing, JavaFX & SWT 4
elitebiber Swing JSpinner und die Zeit AWT, Swing, JavaFX & SWT 11
T JSpinner Problem AWT, Swing, JavaFX & SWT 6
G JSpinner umdrehen? AWT, Swing, JavaFX & SWT 2
G JSpinner und ChangeListener AWT, Swing, JavaFX & SWT 3
K JSpinner - Model <-> View, unterschiedliche Werte AWT, Swing, JavaFX & SWT 9
Tom299 JSpinner nur Zeitangabe AWT, Swing, JavaFX & SWT 13
G JSpinner Frage AWT, Swing, JavaFX & SWT 2
H JSpinner mit Kalenderwoche und Jahr AWT, Swing, JavaFX & SWT 6
M JSpinner in einer JTable? AWT, Swing, JavaFX & SWT 5
P Frage zu JSpinner AWT, Swing, JavaFX & SWT 3
B JTextFiled, JCheckBox, JSpinner Eigenschaften speichern AWT, Swing, JavaFX & SWT 2
R Konvertieren von Werten im JSpinner AWT, Swing, JavaFX & SWT 2
K JSpinner Werte verschwinden bei Panel Wechsel AWT, Swing, JavaFX & SWT 2
B JSpinner passt optisch nicht zu anderen Komponenten AWT, Swing, JavaFX & SWT 2
D JSpinner ohne Edit Möglichkeit AWT, Swing, JavaFX & SWT 5
J JSpinner mit zahlen AWT, Swing, JavaFX & SWT 10
P JSpinner Objekt anstatt Zahlen sollen man Namen auswählen AWT, Swing, JavaFX & SWT 2
L JSpinner + addRow() AWT, Swing, JavaFX & SWT 3
M .txt unter Verwendung von JSpinner in Textfeld schreiben AWT, Swing, JavaFX & SWT 4
S JSpinner: Editieren einschränken AWT, Swing, JavaFX & SWT 4
F JSpinner FocusListener AWT, Swing, JavaFX & SWT 2
W JSpinner: Button vertikal anordnen AWT, Swing, JavaFX & SWT 2
R JSpinner rotieren AWT, Swing, JavaFX & SWT 6
A JSpinner in Dialogbox integrieren? AWT, Swing, JavaFX & SWT 3
D JSPinner Größe verändern - setSize() funktioniert nicht AWT, Swing, JavaFX & SWT 7
javasdann JSpinner & KeyListener. AWT, Swing, JavaFX & SWT 8
G jspinner schrittweite in Abhängigkeit vom aktuellen Wert AWT, Swing, JavaFX & SWT 3
G JSpinner bringt bei anklicken eine CastException AWT, Swing, JavaFX & SWT 5
flashfactor Un mal ein Problem mit JSpinner AWT, Swing, JavaFX & SWT 7
I jSpinner.getValue() AWT, Swing, JavaFX & SWT 2
G JSpinner für Datumsanzeige AWT, Swing, JavaFX & SWT 2
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
G JavaFX ColorPicker setValue funktioniert nicht AWT, Swing, JavaFX & SWT 8
O JSlider - wie unterscheide ich mit Maus verändert und durch setValue verändert. AWT, Swing, JavaFX & SWT 16
O ScrollBar.setValue(int value); ? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben