Назад
    Вперед 
    3.5. Переключатели с зависимой фиксацией
    В примере демонстрируются приемы работы со
    стандартными переключателями, имеющими
    зависимую фиксацию и сделанными на базе класса
    Checkbox. 
    Исходный текст примера 
    Архив проекта для Java WorkShop 2.0  
    Демонстрация 
    (ваш браузер должен уметь работать с аплетами
    Java) 
    Немного теории
    Как мы уже говорили в описании предыдущего
    примера, на базе класса Checkbox вы можете создавать
    в приложениях Java стандартные переключатели с
    независимой и зависимой фиксацией.  
    Чтобы сделать группу переключателей с
    зависимой фиксацией, вы должны вначале создать
    объект класса CheckboxGroup. Это легко, так как
    соответствующий конструктор не имеет
    параметров.  
    Далее переключатели создаются в виде объектов
    класса Checkbox. Через первый параметр вы должны
    передать конструктору заголовок переключателя,
    через второй - ссылку на объект класса CheckboxGroup, а
    через третий - начальное состояние переключателя
    (true - включен, false - выключен).  
    Дальнейшая работа выполняется таким же
    образом, что и с переключателями, имеющими
    независимую фиксацию.  
    Текущее состояние переключателя определяется
    с помощью метода getState. Если переключатель
    включен, этот метод возвращает значение true, а
    если выключен - false.  
    Для установки переключателя в заданное
    состояние можно использовать метод setState. Этому
    методу через единственный параметр передается
    новое состояние - true - включен, false - выключен.  
    Чтобы отследить изменение состояния
    переключателя в результате действий
    пользователя, необходимо организовать в аплете
    (или в окне автономного приложения) обработку
    событий, например, переопределив метод action.  
    Описание примера 
    В окне аплета имеются три переключателя,
    объединенные в группу. Они управляют цветом
    текстовой строки, нарисованной в нижней части
    этого окна (рис. 1). 
      
    Рис. 1. Окно аплета с группой зависимых
    переключателей  
    Переключатель Red задает красный цвет текста,
    переключатель Blue - синий, а переключатель Black -
    черный. 
    Рассмотрим исходный текст аплета.  
    Поля главного класса аплета
    В поле grTextColor находится ссылка на объект класса
    CheckboxGroup - группу зависимых переключателей:  
    CheckboxGroup grTextColor; 
    Поля с именами chboxRedText, chboxBlueText и chboxBlackText
    предусмотрены для хранения ссылок на
    переключатели с зависимой фиксацией,
    управляющие цветом текста:  
    Checkbox chboxRedText;
Checkbox chboxBlueText;
Checkbox chboxBlackText; 
    В поле clrText хранится текущий цвет текстовой
    строки, который зависит от состояния
    переключателей:  
    Color clrText = Color.black; 
    Метод init
    При инициализации аплета метод init
    устанавливает желтый цвет фона окна аплета:  
    setBackground(Color.yellow); 
    Затем мы создаем группу зависимых
    переключателей:  
    grTextColor = new CheckboxGroup(); 
    Далее метод init создает три переключателя,
    передавая конструктору заголовки, ссылки на
    группу и начальное состояние:  
    chboxBlackText  = 
  new Checkbox("Black", grTextColor, true);
chboxBlueText   = 
  new Checkbox("Blue", grTextColor, false);
chboxRedText    = 
  new Checkbox("Red", grTextColor, false);
    Первый из этих трех переключателей по
    умолчанию будет находиться во включенном
    состоянии, так как значение последнего
    параметра, переданное конструктору, равно true.  
    Добавление переключателей в окно аплета
    выполняется методом add:  
    add(chboxBlackText);
add(chboxBlueText);
add(chboxRedText); 
    Метод paint
    В задачу метода paint входит отображение в нижней
    части окна аплета текстовой строки. Цвет этой
    строки определяется содержимым поля clrText:  
    public void paint(Graphics g)
{
  g.setColor(clrText);
  g.setFont(
    new Font("Helvetica", Font.PLAIN, 24));
      
  g.drawString("Test string", 10, 60);
}
    Метод action
    Метод action получает управление, когда
    пользователь изменяет состояние переключателей,
    расположенных в окне аплета, или выполняет
    другие действия, вызывающие появление событий.  
    Если событие вызвано переключателем, то его
    ссылка имеет тип Checkbox. В этом случае мы
    сохраняем ее в переменной chboxChanged после
    явного приведения типа:  
    public boolean action(Event evt, Object obj)
{
  Checkbox chboxChanged;
    
  if(evt.target instanceof Checkbox)
  {
    chboxChanged = (Checkbox)evt.target;
      . . .
    return true;
  }
  return false;
}
    Таким образом, ссылка на переключатель,
    состояние которого изменил пользователь,
    оказывается в поле chboxChanged.  
    Далее мы определяем, какой именно
    переключатель вызвал появление события.  
    В зависимости от того, состояние какого
    переключателя было изменено пользователем, мы
    устанавливаем в поле clrText соответствующий цвет
    текстовой строки:  
    if(chboxChanged.equals(chboxRedText))
{
  clrText = Color.red;
}
else if(chboxChanged.equals(chboxBlackText))
{
  clrText = Color.black;
}
else if(chboxChanged.equals(chboxBlueText))
{
  clrText = Color.blue;
}
    Затем метод action перерисовывает окно аплета,
    вызывая метод repaint, и сигнализирует о завершении
    обработки события, возвращая значение true:  
    repaint();
return true; 
     
    Назад Вперед  |