Вы можете перейти к текстовому полю, которое на самом деле является JFormattedTextField
с помощью
- Первый вызов
getEditor()
на вашем JSpinner для получения редактора счетчика - приведение к возвращенномуобъект
JSpinner.DefaultEditor
- Затем вызовите
getTextField()
на этом.Затем вы можете установить его предпочитаемый размер, если хотите.
Редактировать: как отмечает trashgod, использование правильного макета имеет первостепенное значение и, вероятно, лучший способ решить - использовать макеты, которые вы используете лучше всего.эта проблема.
Редактировать 2: Вышеприведенное неверно, поскольку установка предпочтительного размера текстового поля ничего не делает.Однако вы можете установить предпочтительный размер самого редактора, и это работает.например,
import java.awt.Dimension;
import javax.swing.*;
public class SpinnerBigTextField {
private static void createAndShowGui() {
JSpinner spinner = new JSpinner(new SpinnerNumberModel(0.0, 0.0, 999.0,
0.5));
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(300, 100));
panel.add(spinner);
JComponent field = ((JSpinner.DefaultEditor) spinner.getEditor());
Dimension prefSize = field.getPreferredSize();
prefSize = new Dimension(200, prefSize.height);
field.setPreferredSize(prefSize);
JFrame frame = new JFrame("SpinnerBigTextField");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}