JAVATM GUI TUTORIAL

Csúszka

JAVATM GUI Tutorial > Csúszka   |   Applet   Forráskód   Letöltések

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.


helyzetjava.awt.Scrollbar.VERTICAL
kezdő érték0
a látható szélesség10
minimum0
maximum100

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();     }

Forráskód

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.applet.*; public class ScrollbarExampleApplet extends JApplet implements AdjustmentListener { private JPanel mainPanel; private JPanel scrollPanel; private JPanel colorPanel; private Scrollbar redScroll; private Scrollbar greenScroll; private Scrollbar blueScroll; private JLabel redLabel; private JLabel greenLabel; private JLabel blueLabel; public void buildGui() { // creating objects mainPanel = new JPanel(); scrollPanel = new JPanel(); colorPanel = new JPanel(); 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); // labels for showing values redLabel = new JLabel("Red = 0"); greenLabel = new JLabel("Green = 0"); blueLabel = new JLabel("Blue = 0"); // 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); // adding event listeners redScroll.addAdjustmentListener(this); greenScroll.addAdjustmentListener(this); blueScroll.addAdjustmentListener(this); // intitalizing the colorPanel colorPanel.setBackground(new Color(0,0,0)); } 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(); } public void init() { buildGui(); this.repaint(); } }

Letöltés

Fordítás J2SDK 1.4 vagy magasabb verziójával.
# > javac ScrollbarExampleApplet.java
Applet: ScrollbarExampleApplet.java
Stand-alone változat: ScrollbarExample.java



Vissza a lap tetjére