23 package com.realtime.crossfire.jxclient.gui.misc;
36 import java.awt.Color;
37 import java.awt.Component;
38 import java.awt.Dimension;
39 import java.awt.event.KeyEvent;
40 import javax.swing.JComponent;
41 import javax.swing.JSpinner;
42 import javax.swing.SpinnerNumberModel;
43 import javax.swing.border.Border;
44 import javax.swing.border.LineBorder;
45 import javax.swing.event.ChangeListener;
46 import org.jetbrains.annotations.NotNull;
47 import org.jetbrains.annotations.Nullable;
118 final JComponent editor =
spinner.getEditor();
119 for (
int i = 0; i < editor.getComponentCount(); i++) {
120 final Component component = editor.getComponent(i);
121 component.setFocusable(
false);
147 if (
value > maxValue) {
150 if (
value < minValue) {
160 final Dimension result =
spinner.getPreferredSize();
161 return result ==
null ? super.getPreferredSize() : result;
166 final Dimension result =
spinner.getMinimumSize();
167 return result ==
null ? super.getMinimumSize() : result;
171 public void setBounds(
final int x,
final int y,
final int width,
final int height) {
172 super.setBounds(x, y, width, height);
173 spinner.setSize(width, height);
186 spinner.setBorder(
new LineBorder(Color.RED, 1));
208 switch (e.getKeyCode()) {
209 case KeyEvent.VK_ENTER:
217 case KeyEvent.VK_BACK_SPACE:
220 spinner.setBorder(
new LineBorder(Color.RED, 1));
224 final char ch = e.getKeyChar();
225 if (ch != KeyEvent.CHAR_UNDEFINED && ch != (
char)127 && ch >=
' ') {
226 if (
'0' <= ch && ch <=
'9' &&
value < 10) {
229 spinner.setBorder(
new LineBorder(Color.RED, 1));