9

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

UTSAstudent
  • 111
  • 1
  • 2
  • 3

2 Answers2

12

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);
Michael
  • 41,989
  • 11
  • 82
  • 128
0

Set the preferred and minimum sizes:

RandomSpinner = new JSpinner(tempModel);
int w = RandomSpinner.getWidth();   int h = RandomSpinner.getHeight();
Dimension d = new Dimension(w * 2, h);
RandomSpinner.setPreferredSize(d);
RandomSpinner.setMinimumSize(d);

Setting preferred size should be enough if you have enough space in your frame.

icza
  • 389,944
  • 63
  • 907
  • 827
  • 1
    [Don't use `setPreferredSize()` when you really mean to override `getPreferredSize()`](http://stackoverflow.com/q/7229226/230513). – trashgod Aug 07 '14 at 19:06