Вы можете установить предпочтительный размер, используя setPreferredSize(Dimension)
;например,
JPanel pnl = new JPanel(new BorderLayout());
pnl.setPreferredSize(new Dimension(640, 480));
Это значение впоследствии можно будет получить, вызвав getPreferredSize()
, и будет использовано при разметке компонента, хотя обратите внимание, что не гарантируется, что он будет фактически отображен в этом размере.
Почему вам на самом деле требуется размер до его рендеринга?Обычно при программировании на Swing вам не нужно иметь дело с явными размерами / размерами, так как выбранный макет позаботится об этих особенностях для вас.
РЕДАКТИРОВАТЬ
Для адресациизапрос OP относительно JTextField
, здесь можно вызвать конструктор на основе int
, который принимает ожидаемое количество столбцов.Это приводит к тому, что текстовое поле отображается достаточно широким, чтобы поддерживать это количество символов.
Второй момент касается комментария о том, что методы setXXXSize никогда не следует вызывать напрямую и что разработчик должен полагаться исключительно на LayoutManager
,Это не всегда уместно - как правило, необходимо установить предпочтительный размер основного фрейма приложения.Например, предположим, что я писал простое браузерное приложение на Swing.Большая часть основного фрейма - это JEditorPane
для рендеринга HTML.Если я не установлю предпочтительный размер для этого компонента (или содержащего фрейма) и вызову pack()
, кадр, скорее всего, будет отображаться как можно меньше, а не с разумными размерами.