Событие AdjustmentEvent
Это событие возникает для полосы прокрутки Scrollbar при всяком изменении ее бегунка и отмечается идентификатором ADJUSTMENT_VALUE_CHANGED.
Соответствующий интерфейс описывает один метод:
public interface AdjustmentListener extends EventListener{ public void adjustmentValueChanged(AdjustmentEvent e); }
Аргумент е этого метода предоставляет ссылку на источник события методом e.getAdjustable(), текущее значение положения движка полосы прокрутки методом е.getvalue (), и способ изменения его значения методом e.getAdjustmentType(), возвращающим следующие значения:
- UNIT__INCREMENT – увеличение на одну единицу;
- UNIT_DECREMENT – уменьшение на одну единицу;
- BLOCK_INCREMENT – увеличение на один блок;
- BLOCK_DECREMENT – уменьшение на один блок;
- TRACK – процес передвижения бегунка полосы прокрутки.
"Оживим" программу создания цвета, приведенную в листинге 10.4, добавив необходимые действия. Результат этого приведен в листинге 12.5.
Листинг 12.5. Программа создания цвета.
import java.awt.*; import java.awt.event.*; class ScrollTestl extends Frame{ private Scroiibar sbRed = new Scroiibar(Scroiibar.VERTICAL, 127, 16, 0, 271), sbGreen = new Scroiibar(Scroiibar.VERTICAL, 127, 16, 0, 271), sbBlue = new Scroiibar(Scroiibar.VERTICAL, 127, 16, 0, 271); private Color с = new Color(127, 127, 127); private Label 1m = new Label(); private Button b1= new Button("Применить"), b2 = new Button("Отменить"); ScrollTestl(String s){ super(s); setLayout(null); setFont(new Font("Serif", Font.BOLD, 15)); Panel p = new Panel(); p.setLayout(null); p.setBounds(10.50, 150, 260); add(p); Label Ic = new Label("Подберите цвет"); lc.setBounds(20, 0, 120, 30); p.add(lc); Label Imin = new Label("0", Label.RIGHT); lmin.setBounds(0, 30, 30, 30); p.add(lmin); Label Middle = new Label("127", Label.RIGHT); lmiddle.setBounds(0, 120, 30, 30); p.add(Imiddle); Label Iroax = new Label("255", Label.RIGHT); Imax.setBoundsfO, 200, 30, 30); p.add(lraax); sbRed.setBackground(Color.red); sbRed.setBounds(40, 30, 20, 200); p.add(sbRed); sbRed.addAdjustmentListener(new ChColorO); sbGreen.setBackground(Color.green); sbGreen.setBounds(70, 30, 20, 200); p.add(sbGreen); sbGreen.addAdjustmentListener(new ChColor()); sbBlue.setBackground(Color.blue); sbBlue.setBoundsds (100, 30, 20, 200); p.add(sbBlue); sbBlue.addAdjustmentListener(new ChColor()); Label Ip = new Label("Образец:"); lp.setBoundS(250, 50, 120, 30); add(lp); 1m.setBackground(new Color(127, 127, 127)); Im.setBounds(220, 80, 120, 80); add(lm); b1.setBounds(240, 200, 100, 30); add(bl); b1.addActionListener(new ApplyColor()); b2.setBounds(240, 240, 100, 30); add(b2); b2.addActionListener(new CancelColor()); setSize(400, 300); setVisible(true);) class ChColor implements AdjustmentListener{ public void adjustmentValueChanged(AdjustmentEvent e){ int red = с.getRed(), green = с.getGreen(), blue = с.getBlue(); if (e.getAdjustable() == sbRed) red = e.getValue(); else if (e.getAdjustablet) == sbGreen) green = e.getValue(); else if (e.getAdjustable() == sbBlue) blue = e.getValue(); с = new Color(red, green, blue); lm.setBackground(c); } } class ApplyColor implements ActionListener { public void actionPerformed(ActionEvent ae){ setBackground(c); } } class CancelColor implements ActionListener { public void actionPerformed(ActionEvent ae){ с = new Color(127, 127, 127); sbRed.setValue(127); sbGreen.setValue(127); sbBlue.setValue(127); lm.setBackground(c); setBackground(Color.white); } } public static void main(String[] args){ Frame f = new ScrollTestl(" Выбор цвета"); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent ev){ System.exit(0); } }); } }