You can get a text field that is actually a JFormattedTextField on
- First call
getEditor() on your JSpinner to get the spinner editor - returns the returned object in
JSpinner.DefaultEditor - Then call
getTextField() . Then you can set it to preferredSize if you want.
Edit: as trashgod noted, however, using the correct layout is of utmost importance and make sure that the most suitable layouts are the best way to solve this problem.
Edit 2: The above is incorrect, since setting the preferred field size does nothing. However, you can set the preferred size of the editor itself, and it works. eg,
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(); } }); } }
source share