Avatar billede sgt_bk Nybegynder
13. august 2004 - 13:01 Der er 4 kommentarer og
1 løsning

Vælge værdi i Jspinner

Jeg har en JSpinner, med en SpinnerNumberModel der ser ud som følger:

SpinnerNumberModel ti_halvtreds = new SpinnerNumberModel(10, 10, 50, 0.1);

Hvordan vælger jeg eksempelvis værdien 20?

jeg har prøvet med ti_halvtreds.setValue(20) men det ser ikke ud til at virke...

På forhånd tak!

mvh
Avatar billede sgt_bk Nybegynder
13. august 2004 - 13:41 #1
Og så lige et tillægsspørgsmål: Er der en måde hvorpå man kan få en JSpinner til at få sig til at bevæge sig i ryk af forskellige intervaller i forskellige intervaller?

altså, f.eks:

fra 0 - 10: ryk af 0,1
fra 10 - 20: ryk af 0,5
fra 20 - 30: ryk af 1

osv.
Avatar billede anadan Nybegynder
13. august 2004 - 15:38 #2
SpinnerNumberModel arbejder med Objects, så du er nødt til at wrappe 20 ind i en integer:
ti_halvtreds.setValue(new Integer(20));

og til tillægsspørgsmålet:
du kan løse problemet ved at lave en subclass til SpinnerNumberModel, hvor du overrider metoderne getNextValue():Object, og getPreviousValue():Object

du kan så lægge dine ryk ind i en datastruktur, og så returnere dem, når getNextValue, og getPreviousValue kaldes.
Avatar billede sgt_bk Nybegynder
13. august 2004 - 18:32 #3
Tak for det.

kan du evt give et primitivt eksempel på det sidste?
Avatar billede anadan Nybegynder
13. august 2004 - 18:42 #4
okay, følgende kode løser opgaven

import java.awt.*;
import javax.swing.*;
import java.util.*;

public class Test extends JFrame{

    private JSpinner spinner;

    public static void main(String[] args){
        new Test();
    }
    public Test(){
        getContentPane().add(spinner = new JSpinner(new MySpinnerNumberModel()));
        spinner.setValue(new Integer(21));
        setSize(100, 100);
        setVisible(true);
    }
    private class MySpinnerNumberModel extends SpinnerNumberModel{
        //en liste indeholder jspinnerens tal
        private ArrayList items = new ArrayList();
        //hvilket index i listen er det viste
        int index = 0;
        public MySpinnerNumberModel(){
            //fyld items i listen
            for (double i = 0; i<=10; i+=0.1) {
                items.add(new Double(i));
            }
            for (double i = 10.5; i<=20; i+=0.5) {
                items.add(new Double(i));
            }
           
            for (double i = 21; i<=30; i+=1) {
                items.add(new Double(i));
            }
        }
        public Object getNextValue(){
            //tæl index op
            if(index<items.size()-1)index++;
            return items.get(index);
        }
        public Object getValue(){
            return items.get(index);
        }
        public Object getPreviousValue(){
            //til index ned, kun til 0
            if(index>0)index--;
            return items.get(index);
        }
    }
}
Avatar billede sgt_bk Nybegynder
13. august 2004 - 19:14 #5
Alletiders, tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester