Python: Regex выводит 12_34 - мне нужно 1234

Для выполнения начальной компоновки вам необходимо вызвать frame.pack(). Изменение размера окна автоматически приводит к исправлению макета, но frame.setSize(...) не *.

Переместите frame.setVisible(true) в конец вашего метода run (т. Е. После того, как вы построили все элементы пользовательского интерфейса ) и положите frame.pack() непосредственно перед frame.setVisible(true). (Спасибо Hovercraft и MadProgrammer за это указание)

* По крайней мере, это не так, если рамка не видна. Он может работать, если рамка уже видна; попробуйте и посмотрите.

EDIT: теперь, когда я перечитываю javadoc, вы, вероятно, не хотите pack в конце концов - он изменит размер кадра для вас. Не тестируя его, я думаю, что движение setVisible до конца будет работать; если вместо этого не использовать revalidate, а не pack, чтобы запустить механизм компоновки.

РЕДАКТИРОВАТЬ 2: Теперь, когда я повторно перечитаю javadoc, setVisible проверит если он еще не отображается. Поэтому вам не нужен явный вызов revalidate. setSize будет аннулировать компонент, но не будет revalidate it.

TL; DR: стоит прочитать, как работают валидация и отображаемость в Swing поэтому вы не делаете ошибок, которые я только что сделал.

0
задан Greg Hewgill 16 September 2012 в 07:58
поделиться