JTextField in JPanel which in turn in JDialog doesn't take specified size. I tried to use BoxLayout and FlowLayout, but still have not achieved the desired size. I.E. I measure the size of String example and set this size to width of JTextField inputCat, but inputCat doesn't take this size, then I call it. How correctly set size of specified String to JTextField?  Here is my code: 
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FontMetrics;
import java.util.Calendar;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JDesktopPane;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerModel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class DemoJDialog {
    static private JInternalFrame internal;
    public static void main(String[] args) {
        new DemoJDialog();
    }
    public DemoJDialog() {
        EventQueue.invokeLater(new Runnable() {
            @SuppressWarnings({ "rawtypes", "unchecked" })
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }
                internal = new JInternalFrame("Example", true, true, false, true);
                internal.setLayout(new BorderLayout());
                internal.setVisible(true);
                JDesktopPane dp = new JDesktopPane();
                dp.add(internal);
                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(dp);
                frame.setSize(800, 600);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
                JTextField inputCat = new JTextField(); 
                String example = new String("Some very-very-very-"
                        + "very-very-very-very-very-very long string (really long )");
                int heightInputCat = inputCat.getSize().height;
                FontMetrics FN = internal.getFontMetrics(internal.getFont());
                int widthInputCat = SwingUtilities.computeStringWidth(FN, example);
                inputCat.setSize(widthInputCat, heightInputCat);
                String[] comboString = { "Telecast", "Radiocast" };
                JComboBox comboBox = new JComboBox(comboString);
                Calendar now = Calendar.getInstance();
                SpinnerModel modelSpinner = new SpinnerDateModel(now.getTime(), 
                        null, null, Calendar.MONTH);
                final JSpinner spinner = new JSpinner(modelSpinner);
                spinner.setEditor(new JSpinner.DefaultEditor(spinner)); 
                JPanel listPane = new JPanel();
                listPane.setLayout(new BoxLayout(listPane, BoxLayout.X_AXIS));
                listPane.add(comboBox);
                listPane.add(Box.createHorizontalStrut(10));
                listPane.add(inputCat);
                listPane.add(Box.createHorizontalStrut(10));
                listPane.add(spinner);
                Object[] array = {
                        new JLabel ("Enter a new category:"),
                        listPane
                };
                JOptionPane pane = new JOptionPane(array, JOptionPane.PLAIN_MESSAGE,
                        JOptionPane.OK_CANCEL_OPTION);
                JDialog dialog = pane.createDialog(internal, "Enter a new category:");
                dialog.setVisible(true);
            }
        });
    }
}
 
    
 
    