Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Используя Компоненты Swing
Раздел: Как Использовать Различные Компоненты
Как Использовать Цветных Селекторов
Домашняя страница > Создание GUI С JFC/Swing > Используя Компоненты Swing

Как Использовать Цветных Селекторов

Используйте JColorChooser class, чтобы позволить пользователям выбрать из палитры цветов. Цветной селектор является компонентом, который можно поместить куда угодно в пределах Вашего GUI программы. JColorChooser API также облегчает переводить диалоговое окно в рабочее состояние (модальный или не), который содержит цветного селектора.

Вот изображение приложения, которое использует цветного селектора, чтобы установить цвет текста в баннере:

Снимок ColorChooserDemo, который содержит стандартного цветного селектора.

Попробуйте это: 

Отметьте: 

Реализация JColorChooser был улучшен в JDK 7. Если Вы выполните пример, используя JDK 6 или ранее, то Вы будете видеть более простой цветной компонент селектора.


Исходный код для программы находится в ColorChooserDemo.java.

Цветной селектор состоит из всего в пределах маркированного поля, Выбирают Цвет текста. Это - то, на что стандартный цветной селектор похож во Взгляде Java & Чувстве. Это содержит две части, снабженную вкладками область и панель предварительного просмотра. Три вкладки в снабженной вкладками области выбирают панели селектора. Панель предварительного просмотра ниже снабженной вкладками области выводит на экран в настоящий момент выбранный цвет.

Вот код от примера, который создает a JColorChooser экземпляр и добавляет это к контейнеру:

public class ColorChooserDemo extends JPanel ... {
    public ColorChooserDemo() {
        super(new BorderLayout());
        banner = new JLabel("Welcome to the Tutorial Zone!",
                            JLabel.CENTER);
        banner.setForeground(Color.yellow);
        . . .
        tcc = new JColorChooser(banner.getForeground());
        . . .
        add(tcc, BorderLayout.PAGE_END);
    }

JColorChooser конструктор в предыдущем фрагменте кода берет a Color параметр, который определяет первоначально выбранный цвет селектора. Если Вы не определяете начальный цвет, то цветной селектор выводит на экран Color.white. См. Color Документация API для списка цветных констант можно использовать.

Цветной селектор использует экземпляр ColorSelectionModel содержать и управлять текущим выбором. Цветная модель выбора запускает событие изменения всякий раз, когда пользователь изменяет цвет в цветном селекторе. Пример программы регистрирует слушателя изменения в цветной модели выбора так, чтобы это могло обновить баннер наверху окна. Следующие кодовые регистры и реализации слушатель изменения:

tcc.getSelectionModel().addChangeListener(this);
. . .
public void stateChanged(ChangeEvent e) {
    Color newColor = tcc.getColor();
    banner.setForeground(newColor);
}

См., Как Записать Слушателю Изменения для общей информации о слушателях изменения и событиях изменения.

Основной цветной селектор, как тот, используемый в примере программы, достаточен для многих программ. Однако, цветной API селектора позволяет Вам настраивать цветного селектора если это с панелью предварительного просмотра Вашего собственного проекта, добавляя Ваши собственные панели селектора к этому, или удаляя существующие панели селектора от цветного селектора. Дополнительно, JColorChooser class обеспечивает два метода, которые облегчают использовать цветного селектора в пределах диалогового окна.

Остальная часть этого раздела обсуждает эти темы:

Другой Пример: ColorChooserDemo2

Теперь давайте обращать наше внимание к ColorChooserDemo2, измененной версии предыдущей демонстрационной программы, которая использует больше JColorChooser API.


Попробуйте это: 

Вот изображение ColorChooserDemo2:

Снимок ColorChooserDemo, который содержит пользовательского цветного селектора.

Эта программа настраивает селектора цвета текста баннера этими способами:

Удаление или Замена Панели Предварительного просмотра покрывают первую настройку. Создание Пользовательской Панели Селектора обсуждает последние два.

Эта программа также добавляет кнопку, которая переводит цветного селектора в рабочее состояние в диалоговом окне, которое можно использовать, чтобы установить цвет фона баннера.

Показ Цветного Селектора в Диалоговом окне

JColorChooser class обеспечивает два метода class, чтобы облегчить использовать цветного селектора в диалоговом окне. ColorChooserDemo2 использует один из этих методов, showDialog, вывести на экран селектора цвета фона, когда пользователь щелкает по Выставочному Селектору Цвета... кнопка. Вот одна строка кода от примера, который переводит селектора цвета фона в рабочее состояние в диалоговом окне:

Color newColor = JColorChooser.showDialog(
                     ColorChooserDemo2.this,
                     "Choose Background Color",
                     banner.getBackground());

Первым параметром является родитель для диалогового окна, вторым является диалоговый title, и третьим является первоначально выбранный цвет.

Диалоговое окно исчезает при трех условиях: пользователь выбирает цвет и щелкает по кнопке OK, пользователь отменяет работу с кнопкой Cancel, или пользователь отклоняет диалоговое окно с управлением кадром. Если пользователь выбирает цвет, showDialog метод возвращает новый цвет. Если пользователь отменяет работу или отклоняет окно, возвраты метода null. Вот код от примера, который обновляет цвет фона баннера согласно значению, возвращенному showDialog:

if (newColor != null) {
    banner.setBackground(newColor);
}

Диалоговое окно, создаваемое showDialog модально. Если Вы хотите немодальное диалоговое окно, можно использовать JColorChooser's createDialog метод, чтобы создать диалоговое окно. Этот метод также позволяет Вам определять слушателей действия для OK и кнопок Cancel в диалоговом окне. Использовать JDialog's show метод, чтобы вывести на экран диалоговое окно, создаваемое этим методом. Для примера, который использует этот метод, см. Определение Других Редакторов в, Как Использовать Табличный раздел.

Удаление или Замена Панели Предварительного просмотра

По умолчанию цветной селектор выводит на экран панель предварительного просмотра. ColorChooserDemo2 удаляет панель предварительного просмотра селектора цвета текста с этой строкой кода:

tcc.setPreviewPanel(new JPanel());

Это эффективно удаляет панель предварительного просмотра потому что плоскость JPanel не имеет никакого размера и никакого представления значения по умолчанию. Чтобы задержать панель предварительного просмотра к значению по умолчанию, использовать null как параметр setPreviewPanel.

Чтобы обеспечить пользовательскую панель предварительного просмотра, Вы также используете setPreviewPanel. Компонент, который Вы передаете в метод, должен наследоваться от JComponent, определите разумный размер, и обеспечьте специализированное представление текущего цвета. Чтобы быть уведомленной, когда пользователь изменяет цвет в цветном селекторе, панель предварительного просмотра должна зарегистрироваться как слушатель изменения на цветной модели выбора цветного селектора как описано ранее.

Создание Пользовательской Панели Селектора

Селектор цвета по умолчанию обеспечивает пять панелей селектора:

Можно расширить селектора цвета по умолчанию, добавляя панели селектора Вашего собственного проекта с addChooserPanel, или можно ограничить это, удаляя панели селектора с removeChooserPanel.

Если Вы хотите удалить все панели селектора значения по умолчанию и добавить один или более собственный, можно сделать это с единственным звонком setChooserPanels. ColorChooserDemo2 использует этот метод, чтобы заменить панели селектора значения по умолчанию экземпляром CrayonPanel, пользовательская панель селектора. Вот звонок setChooserPanels от того примера:

//Override the chooser panels with our own.
AbstractColorChooserPanel panels[] = { new CrayonPanel() };
tcc.setChooserPanels(panels);

Код является straighforward: это создает массив, содержащий CrayonPanel. Затем вызовы кода setChooserPanels установить содержание массива как панели селектора цветного селектора.

CrayonPanel подкласс AbstractColorChooserPanel и переопределяет пять абстрактных методов, определенных в его суперклассе:

void buildChooser()
Создает GUI, который включает панель селектора. Пример создает четыре выключателя — один для каждого мелка — и добавляет их к панели селектора.
void updateChooser()
Этот метод вызывают всякий раз, когда панель селектора выводится на экран. Реализация этого метода выбирает выключатель, который представляет в настоящий момент выбранный цвет.
public void updateChooser() {
    Color color = getColorFromModel();
    if (Color.red.equals(color)) {
        redCrayon.setSelected(true);
    } else if (Color.yellow.equals(color)) {
        yellowCrayon.setSelected(true);
    } else if (Color.green.equals(color)) {
        greenCrayon.setSelected(true);
    } else if (Color.blue.equals(color)) {
        blueCrayon.setSelected(true);
    }
}
String getDisplayName()
Возвращает имя дисплея панели селектора. Имя используется на вкладке для панели селектора. Вот пример getDisplayName метод:
public String getDisplayName() {
    return "Crayons";
}
Icon getSmallDisplayIcon()
Возвращает маленький значок, чтобы представить эту панель селектора. Это в настоящий момент неиспользовано. Будущие версии цветного селектора могли бы использовать этот значок или большой, чтобы представить эту панель селектора в дисплее. Реализация в качестве примера этого метода возвраты null.
Icon getLargeDisplayIcon()
Возвращает большой значок, чтобы представить эту панель селектора. Это в настоящий момент неиспользовано. Будущие версии цветного селектора могли бы использовать этот значок или маленький, чтобы представить эту панель селектора в дисплее. Реализация в качестве примера этого метода возвраты null.

Цветной API Селектора

Следующие таблицы приводят обычно используемый JColorChooser конструкторы и методы. Другие методы, которые Вы могли бы вызвать, перечисляются в таблицах API в Классе JComponent. API для того, чтобы использовать цветных селекторов попадает в эти категории:

Создание и Отображение Цветного Селектора
Метод или Конструктор Цель
JColorChooser ()
JColorChooser (Цвет)
JColorChooser (ColorSelectionModel)
Создайте цветного селектора. Конструктор по умолчанию создает цветного селектора с начальным цветом Color.white. Используйте второго конструктора, чтобы определить различный начальный цвет. ColorSelectionModel параметр, когда существующий, предоставляет цветному селектору цветную модель выбора.
Покрасьте showDialog (Компонент, Строка, Цвет) Создайте и покажите цветному селектору в модальном диалоговом окне. Component параметром является родитель диалогового окна, String параметр определяет диалоговый title, и Color параметр определяет начальный цвет селектора.
JDialog createDialog (Компонент, Строка,
булев, JColorChooser, ActionListener,
ActionListener)
Создайте диалоговое окно для указанного цветного селектора. Как с showDialog, Component параметром является родитель диалогового окна и String параметр определяет диалоговый title. Другие параметры следующие: boolean определяет, модально ли диалоговое окно, JColorChooser цветной селектор, чтобы вывести на экран в диалоговом окне, первом ActionListener для кнопки OK, и второе для кнопки Cancel.
Настройка GUI Цветного Селектора
Метод Цель
освободите setPreviewPanel (JComponent)
JComponent getPreviewPanel ()
Набор или использовал компонент, чтобы предварительно просмотреть цветной выбор. Чтобы удалить панель предварительного просмотра, использовать new JPanel() как параметр. Чтобы определить панель предварительного просмотра значения по умолчанию, использовать null.
освободите setChooserPanels (AbstractColorChooserPanel [])
AbstractColorChooserPanel [] getChooserPanels ()
Набор или получает панели селектора в цветном селекторе.
освободите addChooserPanel (AbstractColorChooserPanel)
AbstractColorChooserPanel removeChooserPanel (AbstractColorChooserPanel)
Добавьте панель селектора к цветному селектору или удалите панель селектора из этого.
освободите (булев) setDragEnabled
булев getDragEnabled ()
Набор или добирается dragEnabled свойство, которое должно быть истиной, чтобы включить, перетаскивает обработку на этом компоненте. Значение по умолчанию является ложью. См. Перетаскивают и Отбрасывание и Передача данных для большего количества деталей.
Установка или Получение Текущего Цвета
Метод Цель
освободите setColor (Цвет)
освободите setColor (интервал, интервал, интервал)
освободите setColor (интервал)
Покрасьте getColor ()
Набор или получает в настоящий момент выбранный цвет. Три целочисленных версии setColor метод интерпретирует эти три целых числа вместе как цвет RGB. Единственная целочисленная версия setColor метод делит целое число на четыре 8-разрядных байта и интерпретирует целое число как цвет RGB следующим образом: Как цветной селектор интерпретирует интервал как значение RGB.
освободите setSelectionModel (ColorSelectionModel)
ColorSelectionModel getSelectionModel ()
Набор или получает модель выбора для цветного селектора. Этот объект содержит текущий выбор и запускает события изменения в зарегистрированных слушателей всякий раз, когда выбор изменяется.

Примеры тот Цвет Использования Селекторы

Эта таблица показывает примеры то использование JColorChooser и где те примеры описываются.

Пример Где Описано Примечания
ColorChooserDemo Этот раздел Использует стандартного цветного селектора.
ColorChooserDemo2 Этот раздел Использование один специализированный цветной селектор и один стандартный цветной селектор в диалоговом окне, создаваемом с showDialog.
TableDialogEditDemo Как Использовать Таблицы Шоу, как использовать цветного селектора в качестве пользовательского редактора ячейки в таблице. Цветной селектор, используемый этим примером, создается с createDialog.
BasicDnD Введение в DnD Использует цветного селектора, который не находится в диалоговом окне; демонстрирует значение по умолчанию возможности перетаскивать-и-отбрасывать компонентов Swing, включая цветных селекторов.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Использовать Компонент ButtonGroup
Следующая страница: Как Использовать Поля комбинированного списка