Rigla cu cursor

Clasa javax.swing.JSlider oferă o componentă care are aspectul unei rigle prevăzute cu cursor. Prin deplasarea cursorului cu ajutorul mouse-ului se modifică valoarea indicată de riglă. Valoarea minimă și cea maximă de pe scala riglei și valoarea unei diviziuni se indică prin program. Rolul riglei poate fi asemănat cu cel al unui dispozitiv de ajustare continuă, cum este potențiometrul din aparatura electronică.

La deplasarea cursorului, rigla generează evenimente din clasa javax.swing.event.ChangeEvent, care sunt ascultate cu o clasă care implementează interfața javax.swing.event.ChangeListener.
 
Crearea riglei se face folosind unul dintre constructorii ei, dintre care cel mai complet este
public JSlider(int orientation, int min, int max, int value)
în care 
    orientation - orientarea riglei, care poate fi JSlider.HORIZONTAL sau JSlider.VERTICAL;
   min, max - valorile minimă și maximă de pe scala riglei;
   value - valoarea indicată inițial de cursorul riglei (trebuie să fie în intervalul [min,max]).

Pentru a stabili aspectul riglei se folosesc metodele
    public void setMajorTickSpacing(int n) - stabilirea valorii diviziunilor mari
    public void setMinorTickSpacing(int n) - stabilirea valorii diviziunilor mici
    public void setPaintTicks(boolean b) - determină dacă diviziunile vor fi vizibile
    public void setPaintLabels(boolean b) - determină dacă vor fi afișate valorile numerice ale diviziunilor.

Pentru aprofundarea utilizării riglelor cu cursor, recomandăm consultarea capitolului How to Use Sliders din Java Tutorial.
Exemplu
În fișierul TestRigla.java este dat un exemplu de aplicație în care se testează o riglă cu cursor realizată ca instanță a clasei JSlider.

La partea superioară a ferestrei apare o riglă în poziție orizontală. Când se modifică cu mouse-ul poziția cursorului, în eticheta de la partea inferioară a ferestrei aplicației se afișeaza noua valoare indicată de riglă.
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
 

class TestRigla { 
 static AF af=new AF();
  static AscultRigla ascult=new AscultRigla();
 static IUG iug=new IUG("O rigla ajustabila");

 /* clasa imbricata pentru interfata utilizator grafica */
 static class IUG extends JFrame {
  JSlider rigla;
  JLabel label;
 

  IUG(String titlu) { // constructorul clasei IUG
   super(titlu);
   setSize(450, 150);
   setLocation(200, 50);
   Container cp=getContentPane();
   addWindowListener(af);  // adaugarea ascultatorului de fereastra

   /* Se creeaza o "eticheta" pentru afisarea mesajelor */
   label=new JLabel("Deplasati cursorul riglei si urmariti efectul");
   label.setBorder(BorderFactory.createTitledBorder(
      "Afisarea mesajelor privind valoarea ajustata"));
   cp.add(label, BorderLayout.SOUTH);

   rigla=new JSlider(JSlider.HORIZONTAL, -20, 80, 35);
   rigla.setBorder(BorderFactory.createTitledBorder(
         "Ajustarea valorii"));
   rigla.setMajorTickSpacing(10);
   rigla.setMinorTickSpacing(1);
   rigla.setPaintTicks(true);
   rigla.setPaintLabels(true);
   rigla.addChangeListener(ascult);

   cp.add(rigla, BorderLayout.CENTER);

   setVisible(true);
  }
 } 

 /* Clasa ascultatoare de fereastra */ 
 static class AF extends WindowAdapter {
  public void windowClosing(WindowEvent e) {
   System.exit(0); // incheierea executarii aplicatiei
  }
 }

 /* Clasa ascultatoare a evenimentelor de ajustare a riglei */
 static class AscultRigla implements ChangeListener {
  public void stateChanged(ChangeEvent e) {
    iug.label.setText("Noua valoare: "+iug.rigla.getValue());
  }
 }

 /* Metoda principala a aplicatiei */
 public static void main(String args[]) {
 }
}



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați