Как можно изменить размер Swing JWindow без мерцания?

Вы никогда не были бы в состоянии отсортировать словарь так или иначе. Им на самом деле не заказывают. Гарантии словаря - то, что ключ и оценивает наборы, повторяемы, и значения могут быть получены индексом или ключом, но нет никакой гарантии никакого конкретного порядка. Следовательно необходимо было бы получить пару значение-имя в список.

24
задан willjcroz 2 December 2010 в 08:55
поделиться

2 ответа

Я признаю, что это не особенно полезный ответ, но понимание того, что именно Swing может помочь.

Видите ли, Swing выполняет всю свою работу, за исключением того, что фактически получает немного места для работы с ОС. Все чертежи, виджеты и т. Д. Являются Java-кодом. Это не столько медленно, сколько работает без ускорения 2D-видеокарты и трюков с рендерингом ОС.

Помните DirectDraw? У всего есть это в наше время, и оконные операции являются гладкими по маслу. Но если вы когда-нибудь захватите компьютер, который по какой-то причине не имеет его (например, установка XP без драйверов), вы заметите точно этот тип замедления.

Благодаря Swing, поскольку он управляет всем своим пространством, ОС не может выполнить ни одного из этих приемов рендеринга, чтобы помочь вам.

Кто-то может прийти с некоторой оптимизацией, которая исправит вашу проблему на вашем компьютере, но я обеспокоен тем, что просто не решится основная проблема - Swing медленен и не может работать быстрее.

Вы должны изучить нативные наборы инструментов. AWT в порядке, но не хватает многих виджетов / и т.д. Он встроенный, поэтому он должен быть достаточно быстрым, если это все, что вам нужно. Я неравнодушен к SWT, который используют Eclipse, Vuze (среди прочих). Он сочетает в себе нативность AWT с простотой и возможностями Swing и, конечно, работает везде.

РЕДАКТИРОВАТЬ : После прочтения некоторых ваших комментариев становится совершенно ясно, что вы абсолютно понимаете, как происходит управление окнами - я не хочу показаться снисходительным. Не только это, но вы больше заинтересованы в изменении размера, что мой комментарий не имеет ничего общего с. Я бы по-прежнему рекомендовал SWT, потому что он нативный код и быстрее, но это другой ответ, чем приведенный выше.

2
ответ дан 29 November 2019 в 00:30
поделиться

Я только что попробовал ваш пример. Я действительно видел некоторые небольшие щелчки при изменении размера окна. Я попытался заменить фрагмент кода, начиная с setBounds() и заканчивая AWTUtilities.setWindowShape(this, newShape); на

setSize(newBounds.width, newBounds.height);

, и увидел, что дрожание исчезло. Итак, я бы предложил вам это решение, если у вас нет особых причин использовать setBounds.

1
ответ дан 29 November 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: