Change JSpinner Size (width)

UTSAstudent picture UTSAstudent · Aug 7, 2014 · Viewed 8.6k times · Source

My problem: JSpinner is so skinny that I can only see the chars on the string in the last spot.

ex: "Hello" I only see 'o'.

I have a JPanel in a JFrame's BorderLayout.SOUTH

The JPanel's layout manager is the default which is - correct me if I'm misinformed - a FlowLayout manager.

also there's multiple components in the previously mentioned JPanel.

I've tried

RandomSpinner = new JSpinner(tempModel);
int w = RandomSpinner.getWidth();   int h = RandomSpinner.getHeight();
RandomSpinner.setSize(new Dimension(w * 2, h));
add(RandomSpinner);

this had no effect on the width of the JSpinner.

How should I change the width of my JSpinner or is this a FlowLayout issue?

thank you

Answer

user3667171 picture user3667171 · Aug 7, 2014

You can do it all in the following three steps:

  1. Get the editor component of your spinner:

    Component mySpinnerEditor = mySpinner.getEditor();

  2. Get the text field of your spinner's editor:

    JFormattedTextField jftf = ((JSpinner.DefaultEditor) mySpinnerEditor).getTextField();

  3. Set a default size to the text field:

    jftf.setColumns(your_desired_number_of_columns);