Когда Swing компонента 'визуализуемый'?

Метод «setStyleSheet» УСТАНАВЛИВАЕТ таблицу стилей, а не добавляет новую, поэтому вы продолжаете переопределять уже установленную.

Чтобы указать несколько стилей, попробуйте следующее:

snapshotToolButton.setStyleSheet("#SnapShotButton {border: none;} #SnapShotButton:hover { background-color: pink; }")
5
задан Mahmoud Adam 13 August 2015 в 09:02
поделиться

4 ответа

Добавить HierarchyListener

public class MyShowingListener {
private JComponent component;
public MyShowingListener(JComponent jc) { component=jc; }

public void hierarchyChanged(HierarchyEvent e) {
    if((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED)>0 && component.isShowing()) {
        System.out.println("Showing");
    }
}
}

JTable t = new JTable(...);
t.addHierarchyListener(new MyShowingListener(t));
3
ответ дан 15 December 2019 в 01:10
поделиться

Вы можете прослушивать событие изменения размера. Когда компонент отображается в первый раз, его размер изменяется от 0,0 до того, что определит менеджер по расположению (если он есть).

1
ответ дан 15 December 2019 в 01:10
поделиться

Вам необходимо проверить иерархию компонентов. Проверить после вызова AncestorListener.ancestorAdded .

0
ответ дан 15 December 2019 в 01:10
поделиться

Я всегда использовал Coomponent.addNotify, чтобы узнать, когда компонент готов к рендерингу. Не уверен, что это лучший способ, но у меня он работает. Конечно, вы должны создать подкласс компонента.

Component.isDisplayable должен быть правильным ответом, но я знаю, что он не сработал для меня, как я думал (не помню почему, но что-то произошло, и я переключился на addNotify).

Глядя в исходный код SUN, я вижу, что addNotify запускает HierarchyEvent.SHOWING_CHANGED, так что это лучший способ получать уведомления.

0
ответ дан 15 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

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