Zahl aus Zahlenbereich auswählen

Status
Nicht offen für weitere Antworten.

redbomber

Bekanntes Mitglied
Hi zusammen,

welche Komponente kann ich verwenden, wenn ich dem Benutzer eine Zahl auswählen lassen möchte, von einem Bereich zwischen z.b. 1 bis 20.

Er sollte die Zahl auch selber eintippen können.

Allerdings wenn er eine zu große Zahl eintippt sollte das nicht gehen.
 

redbomber

Bekanntes Mitglied
also bei dem JSpinner kann ich ja den Wertebereich angeben.
Aber was passiert wenn der Benutzer einen größeren Wert angibt?
 

Marco13

Top Contributor
Ich glaube standardmäßig läßt der das nicht zu, d.h. nimmt die Eingabe dann nicht an... kann mich aber auch täuschen...
 

redbomber

Bekanntes Mitglied
Gibt es eine Möglichkeite eine zu hohe Eingabe abzufangen?
Habe es wie folgt probiert:

Code:
protected SpinnerNumberModel numberModel;
protected JSpinner spinner;

numberModel = new SpinnerNumberModel( 1, firstPos, lastPos, 1);
spinner = new JSpinner( numberModel );
numberModel.addChangeListener(new ChangeListener(){

@Override
public void stateChanged(ChangeEvent e) {
Double val =  (Double)(numberModel.getValue());
Double max = (Double) numberModel.getMaximum();
    if(val > max){
	System.out.println("Val is too high");
        numberModel.setValue(max);
     }
   }
});

Aber wenn ein zu hoher Wert eingegeben wird, dann ist dieser zwar im Feld angezeigt,
aber ich kann dann weder runter noch hoch klicken.
Gerne würde ich den Wert stattdessen auf die maximal Range setzen.
 

Ebenius

Top Contributor
Die gute JSpinner-Klasse. Diese Klasse kann so wenig verglichen mit dem Komfort und die Flexibilität die man von Swing sonst gewohnt ist. Das Ding ist so sehr verbaut, eine vernünftige, generische Lösung die null-Values unterstützt hat mich drei Tage gekostet.

Zum Glück liegt das Problem hier nicht ganz so tief; diese Lösung kann nur Integer: [Highlight=Java]spinner.setEditor(new JSpinner.NumberEditor(spinner) {

@Override
public void commitEdit() throws ParseException {
try {
super.commitEdit();
} catch (ParseException ex) {
final JSpinner spinner = getSpinner();
if (spinner != null) {
final JFormattedTextField tf = getTextField();
final Number num = getFormat().parse(tf.getText());
final Object rollbackValue = fixValue(num);

// put value in range after all pending events are processed
SwingUtilities.invokeLater(new Runnable() {

public void run() {
tf.setValue(rollbackValue);
}
});
}
}
}

private Integer fixValue(Number val) {
final Integer value;
if (val instanceof Integer) {
value = (Integer) val;
} else {
value = new Integer(val.intValue());
}

final SpinnerModel model = getSpinner().getModel();
if (model instanceof SpinnerNumberModel) {
final SpinnerNumberModel numModel = (SpinnerNumberModel) model;
final Integer max = (Integer) numModel.getMaximum();
final Integer min = (Integer) numModel.getMinimum();
if (value.compareTo(min) < 0) {
return min;
} else if (value.compareTo(max) > 0) {
return max;
}
}

return value;
}
});[/Highlight]
Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
S Swing Zahl der Zeilenumbrüche in einer JTextArea bestimmen AWT, Swing, JavaFX & SWT 1
MiMa Integer Zahl in Textfield ausgeben AWT, Swing, JavaFX & SWT 12
K Zahl mit paintComponen "zeichnen"? AWT, Swing, JavaFX & SWT 3
Q Dynamische Zahl und Positionierung von Objekten AWT, Swing, JavaFX & SWT 5
G Linie nach Höhe einer Zahl zeichnen? AWT, Swing, JavaFX & SWT 3
L Farbregler - Werte als Zahl ausgeben - Color AWT, Swing, JavaFX & SWT 5
G Linie mit der Maus auswählen AWT, Swing, JavaFX & SWT 5
M JavaFX Tab auswählen mit JavaFX AWT, Swing, JavaFX & SWT 9
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
C JComboBox Objecte übergeben und Eintrag auswählen AWT, Swing, JavaFX & SWT 3
domjos1994 JavaFX Element auswählen auf dem der Cursor ist AWT, Swing, JavaFX & SWT 1
S Pfad für Speichervorgang auswählen AWT, Swing, JavaFX & SWT 11
E JavaFX TableView mit Rechtsklick Zelle auswählen AWT, Swing, JavaFX & SWT 8
W Bei Programmstart jRadioButton automatisch auswählen AWT, Swing, JavaFX & SWT 2
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
T JTree - Elemente mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 6
H Swing Element aus JComboBox auswählen AWT, Swing, JavaFX & SWT 2
S Swing Ordner im JFileChooser auswählen AWT, Swing, JavaFX & SWT 2
N Speicherpfad für Datei auswählen AWT, Swing, JavaFX & SWT 2
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
P Swing RadioButtons - nur einen auswählen AWT, Swing, JavaFX & SWT 3
propra Auf einem JPanel gezeichnete Linie auswählen AWT, Swing, JavaFX & SWT 3
M gleiches Element in JList mehrmals hintereinander auswählen AWT, Swing, JavaFX & SWT 6
Dit_ JTextField | Text auswählen und Caret setzen AWT, Swing, JavaFX & SWT 7
H Swing jTable Zeitspanne auswählen AWT, Swing, JavaFX & SWT 3
Landei Swing JTree - Element mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 4
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
M Swing jcombobox als jtable-editor: neues Item auswählen AWT, Swing, JavaFX & SWT 4
R JFileChooser - Initiales Verzeichnis auswählen AWT, Swing, JavaFX & SWT 8
N Mit JFileChooser ein Verzeichnis auswählen AWT, Swing, JavaFX & SWT 7
S [gelöst] API zum bequemen Navigieren und Auswählen von Ordnern AWT, Swing, JavaFX & SWT 3
N Defaulttext per Mausklick auswählen AWT, Swing, JavaFX & SWT 4
T einzelne Zelle einer JTable auswählen und Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 2
D JTree programmtechnisch mehrere Nodes auswählen. AWT, Swing, JavaFX & SWT 2
N JCalendar - Kein Datum auswählen AWT, Swing, JavaFX & SWT 3
S JTable Reihe auswählen AWT, Swing, JavaFX & SWT 2
S Welches Event beim auswählen einer Zelle? [JTable] AWT, Swing, JavaFX & SWT 3
A JTable zeile auswählen AWT, Swing, JavaFX & SWT 2
K Zeilen von TextArea auswählen AWT, Swing, JavaFX & SWT 3
B JComboBox Item auswählen AWT, Swing, JavaFX & SWT 11
A jtextarea -> ganze zeile auswählen AWT, Swing, JavaFX & SWT 5
H Noch einmal JList (nichts auswählen) AWT, Swing, JavaFX & SWT 2
K Bilddatei mit Filechooser auswählen und anzeigen/impotieren AWT, Swing, JavaFX & SWT 18
P JSpinner Objekt anstatt Zahlen sollen man Namen auswählen AWT, Swing, JavaFX & SWT 2
J JList-Item ind JTable-Zelle auswählen. AWT, Swing, JavaFX & SWT 5
F JTree Letzte Node auswählen AWT, Swing, JavaFX & SWT 8
D "Datei auswählen" Fenster AWT, Swing, JavaFX & SWT 5
G [AWT] Zeichnungen per Maus auswählen AWT, Swing, JavaFX & SWT 8
R JTable: nur eine Zeile auswählen AWT, Swing, JavaFX & SWT 2
T Zeile in JTable mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 8
F Tree-Knoten programmgesteuert auswählen AWT, Swing, JavaFX & SWT 3
K Farbverlauf -> Farbe auswählen mit Regler || JTable Selec AWT, Swing, JavaFX & SWT 5
G für showInputDialog kein eigenes Icon auswählen AWT, Swing, JavaFX & SWT 6
bernd Aus einem JTextArea einen Eintrag auswählen AWT, Swing, JavaFX & SWT 11
P Inhalt von JTextField beim Auswählen markieren AWT, Swing, JavaFX & SWT 7
M Grafikobjekte mit Mouse auswählen und verschieben AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben