JSpinner

Spin

Top Contributor
Hallo ich sitze jetzt schon eine Weile und weiß nicht weiter.
Mit was für Listener kann ich den Wert holden , der sich beim hoch und runterdrücken ändert.

Weiterhin habe ich 8 JSpinner ,
kann ich alle mit einmal die Bedingung verpassen, dass sie nicht unter 0 gehen dürfen.

Ein weiteres Problem wäre ich müsste von jeden JSpinner den Wert holen und den brauch ich zum multiplizieren.

Muss ich dann jeden einzelnden ein Listener geben und das lokal in jeden Listener einer statischen int variable zuweisen , oder gibt es schönere wege ?

danke für tipps
 

KrokoDiehl

Top Contributor
Hallo.

Du kannst einen ChangeListener an deine Spinner hängen. Kann auch für alle Spinner der gleiche sein, denn im ChangeEvent-Objekt hängt dein jeweiliger Spinner als Quelle (
Code:
getSource()
).

Weiterhin kannst du über das SpinnerModel den Wert einschränken:
Java:
JSpinner mySpinner = new JSpinner(new SpinnerNumberModel(value, min, max, step));
 

Spin

Top Contributor
Hey Slater , eigentlich dachte ich , das JSpinner mein Freund wäre , aber irgendwie mhh;)

Ich habe noch nie mit den anderen Listener gearbeitet und irgendwie wollen die mich ärgern.

Java:
  private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {
        Object a = evt.getSource();
        System.out.println(a);
    }

So geben ich die Objekte aus und bekomme komische Sachen ;)

Wie bekomm ich denn jetzt meine Daten ?

Java:
jSpinner1.getModel().getValue();

sowas gibts auch noch , aber wie verbinde ich die miteinander. Will doch nur den geänderten werd holen , grml.

Irgendwie was mit Textfeld.get ...fertig.

Habe gelesen das JSpnner dieses JFotmattetTextField anbietet , aber habe da auch schon einiges versucht :/

@sonecc

Das Daten einfügen und das Minimum setzen hat nun geklappt ;)

Braucht jetzt nur ne Methode zum holoen der werte, danke :)


Java:
Object a = evt.getSource();
        if(a == jSpinner1){
            int a = (int)jSpinner1.getModel().getValue();
        }

mhh das casten will nicht
 
Zuletzt bearbeitet:

Spin

Top Contributor
Ja, danke.
@eraa , ich kenne diese ganzen Seiten, doch habe ich immer ein Objekt , wie in meinem Falle auch :

Java:
 /**
     * Einkauflsite erstellen
     */
    public void partyOrganize() {

        Cocktail co;
        /* Aktuellen Cocktail aus der Combobox holen*/
        String c = (String) jC_party0.getSelectedItem();
        System.out.println(c);

        /* alle CocktailObjekte aus der Liste holen*/
        for (int i = 0; i < cl.sizeCocktails(); i++) {
               co = cl.getCocktail(i);

            /* Wenn der Objektname des Cocktail gleich dem namen des Strings
             * in der ComboBox ist*/
            if (co.getName().equals(c)) {
                for (int j = 0; j < co.getBestandteile().size(); j++) {
                    Bestandteil bestand = co.getBestandteil(i);
                    // von jedem Cocktailbestandteil die Menge * dem Wert im Spinner erhöhen
                    int count = bestand.getMenge() * (Integer) jSpinner1.getModel().getValue();
                    // Von dem Bestandteil neuen Bestand setzen
                    bestand.setMenge(count);
                    partyShoppingList(co);
                }
            } // if vorbei
        }
        
    }
        
    /* Wird ausgelöst, wenn man auf dem Button 'Einkaufsliste generieren' drückt.*/
    public void partyShoppingList(Cocktail co){
         /* Geänderte Daten in der Einkaufsliste anzeigen:*/
        /* Dazu Model verwenden:*/
        DefaultListModel model= new DefaultListModel();
        /* temporäres Cocktail*/
        Cocktail c = co;
        for (int i = 0; i < c.getBestandteile().size(); i++) {
                Bestandteil bestand = c.getBestandteil(i);
           /* Für den jeweiligen Cocktail , Menge usw. dem Model hinzufügen*/
            model.addElement(bestand.getMenge() + " " + bestand.getZutat().getEinheit() + " " +
                    bestand.getZutat().getName());
            
        }  
      }

Java:
int count = bestand.getMenge() * (Integer) jSpinner1.getModel().getValue();


Das haut nicht hin.

Zum anderen wollte ich mal fragen :
Ich habe 8 Comboboxen und 8 JSpinner.

Bisher hole ich von einer JComboBox den String und vergleiche diesen mit einem Cocktail aus der Liste. Wenn dieser Cocktail true ist , dann soll den seinen Bestandteile * dem JSpinnerwert berechnet werden.

Im Nachhinein übergebe ich diesen Cocktail einer Methode , die dann diesen Cocktail ausgibt , mir erhöhter Menge.


Wie mache ich es wenn ich 8 * dieses Szenario habe?

Geht dass nur wenn ich meine Methoden kopiere und entsprechend die Variable änder?

Oder muss ich die Methoden mit parameter füllen , und immer mit anderen Werten füllen?
Wenn ich das zweite mache , bekomme ich denn nicht stress , ?

Szenario:

Jcombobox: Mai Tai JSlider : 2

*klick * auf berechne : funktionen oben werden beide ausgelöst

Wenn ich nun :
Jcombobox: Mai Tai JSlider : 2
Jcombobox: Mai Tai JSlider : 2
Jcombobox: Mai Tai JSlider : 2

3mal das mache und ich rufe auf, denn ruft er die gleiche Methgode mit verschiedenen Parametern auf.?
Danke für hilfe.

Vorallem im code :)
 

eRaaaa

Top Contributor
Java:
int count = bestand.getMenge() * (Integer) jSpinner1.getModel().getValue();


Das haut nicht hin.

Wieso nicht? Fehlermeldung? Könnte imo nur daran liegen, dass jSpinner1 der Methide nicht bekannt ist?!

Mhmm..bei dem Rest: Ich weiß nicht, klingt irgendwie nach Design-Fehler oder nicht so wirklich ergonomischer GUI.
 

Spin

Top Contributor
Ich bekomme paar werte :
Hier ist ein Screenshot


Nun aufgehts:
Java:
public void partyOrganize() {
        Cocktail co;
        /* Aktuellen Cocktail aus der Combobox holen*/
        String c = (String) jC_party0.getSelectedItem();
        int count;
        /* alle CocktailObjekte aus der Liste holen*/
        for (int i = 0; i < cl.sizeCocktails(); i++) {
            co = cl.getCocktail(i);

            /* Wenn der Objektname des Cocktail gleich dem namen des Strings
             * in der ComboBox ist*/
            if (co.getName().equals(c)) {
                System.out.println(co.getName()+" "+1);
                for (int j = 0; j < co.getBestandteile().size(); j++) {
                    Bestandteil bestand = co.getBestandteil(i);
                    System.out.println(bestand.getMenge()+" "+2);
                    // von jedem Cocktailbestandteil die Menge * dem Wert im Spinner erhöhen
                    count = bestand.getMenge() * (Integer) jSpinner1.getModel().getValue();
                    // Von dem Bestandteil neuen Bestand setzen
                    System.out.println(count +" " +3);
                    bestand.setMenge(count);
                    
                }
                partyShoppingList(co);
                break;
            } // if vorbei
            
        }

    }

    /* Wird ausgelöst, wenn man auf dem Button 'Einkaufsliste generieren' drückt.*/
    public void partyShoppingList(Cocktail co) {
        /* Geänderte Daten in der Einkaufsliste anzeigen:*/
        /* Dazu Model verwenden:*/
        DefaultListModel model = new DefaultListModel();
        /* temporäres Cocktail*/
        Cocktail c = co;
        System.out.println(c.getName()+" "+4);
        for (int i = 0; i < c.getBestandteile().size(); i++) {
            Bestandteil bestand = c.getBestandteil(i);
            /* Für den jeweiligen Cocktail , Menge usw. dem Model hinzufügen*/
            model.addElement(bestand.getMenge() + " " + bestand.getZutat().getEinheit() + " " +
                    bestand.getZutat().getName());
            System.out.println(bestand.getMenge());

        }
        jL_partyShopping.setModel(model);
    }


Das ist mein Code, ich habe zusätzlich immer alles ausgeben lassen und Zahlen hinzugefügt:

Java:
Cuba Libre 1
200 2
400 3
400 2
800 3
800 2
1600 3
Cuba Libre 4
1600
0
50

Ich bekomme es nicht hin , selbst bei einen Cocktail und nur einem jSpinner.
Vorallem wenn ich das zweite mal auf dem knopf drücke haut er mir alles durcheinander :/


Java:
 for (int i = 0; i < c.getBestandteile().size(); i++) {
            Bestandteil bestand = c.getBestandteil(i);
            for(int j =0;j<array.length;j++){
            /* Für den jeweiligen Cocktail , Menge usw. dem Model hinzufügen*/
            model.addElement(array[j] + " " + bestand.getZutat().getEinheit() + " " +
                    bestand.getZutat().getName());
            System.out.println(bestand.getMenge());
            }
        }

irgendie die klammersetzung noch , denn klappts...

Muss ich die Klammern anders setzen?
ich meine erhöhen tut er schon die mengen .

Weiß einer einen rat, danke :)
 
Zuletzt bearbeitet:
S

SlaterB

Gast
ist aktuell eine Frage offen?
möglichst klar ohne umfassendes Mixer-Wissen,
möglichst in einem vollständigen kleinen Testprogramm
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
M JSpinner, setValue AWT, Swing, JavaFX & SWT 7
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
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
N JDK1.4- Überladen d. Methoden getValue setValue von JSpinner AWT, Swing, JavaFX & SWT 2
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

Ähnliche Java Themen

Neue Themen


Oben