Bevezetés
Az alábbi példa bemutatja, hogyan lehet használni a csúszkát. A program nem tud mást,
mint olyan színűre szinez egy téglalpot, amilyen színt a felhasználó előállít a csúszkák segítségével.
A csúszkákkal egy-egy színkomponens (piros, zöld, kék) lehet állítani 0-tól 255-ig.
Ha mindhárom színkomponens értéket 0-ra állítjuk, akkor a téglalap színe fekete lesz, ha minden
szín maximum, akkor pedig fehér színt kapunk.
Objektumok létrehozása, inicializállása
A példában szereplő elrendezést úgy tudjuk elérni, ha több panelt használunk. Először szükség van egy
alap panelre (mainPanel ), amely akkora, mint a teljes alkalmazás. Erre két újabb panelt rakunk, a bal oldalin (scrollPanel ) a csúszkák lesznek,
a jobb oldalinak (colorPanel ) viszon a színét fogjuk megváltoztani annak megfelelően, hogy a csúszkák (redScroll, greenScroll, blueScroll ) milyen színt
kevernek ki a három komponensből.
Először hozzuk létre a paneleket. Ezek láthatósága lehet private , mivel csak ebben az osztályban
használjuk majd. A példányosítás a külön függvényben történik.
    private JPanel mainPanel;
    private JPanel scrollPanel;
    private JPanel colorPanel;
        ...
    mainPanel = new JPanel();
    scrollPanel = new JPanel();
    colorPanel = new JPanel();
Ezután létrehozunk három csúszkát. A csúszka JAVATM-ban a java.awt.Scrollbar
osztály implementálja. A helyzete vízszintes lesz, a konstruktor további négy paramétere rendre
kezdőérték, a látható szélesség, minimum és maximum érték. Megjegyzem, hogy a látható
szélesség nem a csúszka hosszára vonatkozik, hanem arra a kis "fogantyúra" amivel az értéket
állítani lehet. A maximu értéket úgy kell megadni, hogy a kívánt maximum értékhez hozzá kell adni a
látható szélesség értékét.
    private Scrollbar redScroll;
    private Scrollbar greenScroll;
    private Scrollbar blueScroll;
        ...
    redScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 20, 0, 275); // 255+20
    greenScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 20, 0, 275);
    blueScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 20, 0, 275);
A java.awt.Scrollbar osztálynak van még két konstruktora. Az egyik az alapértelmezet
konstruktor (default constructor) a másik konstruktornál pedig a csúszka helyzetét kell megadni.
A JAVATM dokumentációból kiderül, hogy az alapértelmezett értékek a következőképpen vannak beállítva.
helyzet | java.awt.Scrollbar.VERTICAL |
kezdő érték | 0 |
a látható szélesség | 10 |
minimum | 0 |
maximum | 100 |
Szükség lesz még néhány címkére is, amelyek a csúszkák értékeit mutatják.
    private JLabel redLabel;
    private JLabel greenLabel;
    private JLabel blueLabel;
        ...
    redLabel = new JLabel("Red = 0");
    greenLabel = new JLabel("Green = 0");
    blueLabel = new JLabel("Blue = 0");
Miután létrhoztuk az objektumokat, készítsük el az elrendezést. A mainPanel elrendezése
GridLayout lesz, 1 sor és 2 oszlop. A scrollPanel elrendezése is
GridLayout lesz, csak itt 6 sor és 1 oszlop. Az egyes paneleket a megfelelőkhöz adjuk hozzá.
A colorPanel -re semmit nem kell beállítani, hiszen arra nem kerül más objektum, csak
a színe fog változni.
    // setting the layouts
    this.add(mainPanel);
    mainPanel.setLayout(new GridLayout(1,2)); // two columns in one row
    scrollPanel.setLayout(new GridLayout(6,1)); // 6 rows and 1 column
    mainPanel.add(scrollPanel);
    mainPanel.add(colorPanel);
    scrollPanel.add(redScroll);
    scrollPanel.add(redLabel);
    scrollPanel.add(greenScroll);
    scrollPanel.add(greenLabel);
    scrollPanel.add(blueScroll);
    scrollPanel.add(blueLabel);
A scrollPanel -re egymás után felváltva helyezzük el a csúszkákat és a címkéket.
Eseménykezelés
Nem marad más hátra, mint az eseménykezelés. Minden csúszkához hozzá kell adni egy megfelő
eseményfigyelőt. Ez az AdjustmentListener lesz. Az eseményt ez az osztály fogja lekezelni, ezért ebben az osztályban
kell implementálni az AdjustmentListener interfész void adjustmentValueChanged(AdjustmentEvent)
metódusát. Ez fogja ugyanis a görgetést érzékelni.
Az eseménykezelő rész működése nagyon egyszerű. Először lekérdezzük a csúszkák értékeit. Átírjuk a címkék szövegét,
végül átfestjük a colorPanel -t és frissítjük az eredményt.
    // adding event listeners
    redScroll.addAdjustmentListener(this);
    greenScroll.addAdjustmentListener(this);
    blueScroll.addAdjustmentListener(this);
        ...
    public void adjustmentValueChanged(AdjustmentEvent e) {
    // getting values from the scrollbars
    int red = redScroll.getValue();
    int green = greenScroll.getValue();
    int blue = blueScroll.getValue();
    // updating the text of labels
    redLabel.setText("Red = "+red);
    greenLabel.setText("Green = "+green);
    blueLabel.setText("Blue = "+blue);
    // repainting the colorPanel with new color
    colorPanel.setBackground(new Color(red, green, blue));
    colorPanel.repaint();
    }
|