JComponent>">Класс State<T extends JComponent>
- Параметры типа:
T- тип компонента, состояние которого необходимо запросить
public abstract class State<T extends JComponent> extends Object
Представляет встроенное или пользовательское состояние в Nimbus.
Synth предоставляет несколько встроенных состояний, которые являются:
- Включен
- Наведение курсора
- Нажатие
- Выключен
- Фокус
- Выбран
- По умолчанию
Однако существует множество других состояний, которые могут быть описаны в LookAndFeel, и было бы неплохо стилизовать компоненты по-разному в зависимости от этих различных состояний. Например, полоса прогресса может быть «неопределенной». Было бы очень удобно определить это как «состояние».
Этот класс, State, предназначен для таких ситуаций. Просто реализуйте абстрактный метод #isInState. Он возвращает true, если данный JComponent находится «в этом состоянии», и false в противном случае. Этот метод будет вызываться много раз в чувствительных к производительности циклах. Он должен выполняться очень быстро.
Например, следующим может быть реализация пользовательского состояния «неопределенного» для JProgressBars:
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- простое понятное имя для состояния, например, «Неопределенное» или «EmbeddedPanel» или «Размытое». Принято использовать верблюжий регистр, начиная с заглавной буквы.
Подробное описание методов
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/plaf/nimbus/State.html