Класс State<T extends JComponent>
- Параметры типа:
T- тип компонента, состояние которого требуется проверить
public abstract class State<T extends JComponent> extends Object
Представляет встроенное или пользовательское состояние в Nimbus.
Synth предоставляет несколько встроенных состояний:
- Включён
- Под курсором мыши
- Нажат
- Отключён
- В фокусе
- Выбран
- По умолчанию
Однако в LookAndFeel можно описать гораздо больше состояний, и было бы удобно задавать для компонентов разные стили в зависимости от этих состояний. Например, индикатор выполнения может быть «неопределённым». Было бы очень удобно разрешить определять это как «состояние».
Этот класс, State, предназначен для таких ситуаций. Достаточно реализовать абстрактный метод #isInState. Он возвращает true, если данный JComponent «находится в этом состоянии», и false в противном случае. Этот метод будет вызываться много раз в критичных к производительности циклах. Он должен выполняться очень быстро.
Например, следующая реализация может задавать пользовательское состояние «Indeterminate» для JProgressBar:
public final class IndeterminateState extends State<JProgressBar> {
public IndeterminateState() {
super("Indeterminate");
}
@Override
protected boolean isInState(JProgressBar c) {
return c.isIndeterminate();
}
}
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новое пользовательское состояние. |
Краткое описание методов
Подробное описание конструкторов
State
protected State(String name)
Создаёт новое пользовательское состояние. Укажите имя состояния. Имя должно быть уникальным среди состояний, заданных для каждого конкретного компонента. Имя состояния должно совпадать с именем, используемым в UIDefaults.
Например, следующий вариант будет правильным:
defaults.put("Button.States", "Enabled, Foo, Disabled");
defaults.put("Button.Foo", new FooState("Foo"));
- Параметры:
-
name- простое, понятное пользователю имя состояния, например "Indeterminate", "EmbeddedPanel" или "Blurred". Принято использовать camel case с заглавной первой буквой.
Подробное описание методов
isInState
protected abstract boolean isInState(T c)
Проверяет, находится ли указанный JComponent в пользовательском состоянии, представленном этим классом. Этот метод выполняется в чрезвычайно критичном к производительности цикле. Примите необходимые меры, чтобы обеспечить его быстрое выполнение.
Nimbus использует этот метод, чтобы определить, в каком состоянии находится JComponent. Например, для JProgressBar может быть задано пользовательское состояние, при котором метод возвращает true, если индикатор выполнения находится в неопределённом состоянии. Реализация этого метода будет выглядеть так:
return c.isIndeterminate();
- Параметры:
-
c- JComponent для проверки. Он никогда не равен null. - Возвращает:
- true, если
cнаходится в пользовательском состоянии, представленном этим экземпляромState
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/plaf/nimbus/State.html