User Tools

Site Tools


swing:jradiobutton

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
swing:jradiobutton [2018/03/23 11:50]
gthanos
swing:jradiobutton [2020/03/30 08:41]
gthanos
Line 3: Line 3:
 Τα //radio buttons// οργανώνονται σε //button groups//. Τα //radio buttons// είναι ανάλογα με τα //check boxes// με την ιδιαιτερότητα ότι μόνο ένα //radio button// μπορεί να είναι επιλεγμένο κάθε φορά στο ίδιο //button group// Επιπλέον, από τα κουμπιά ενός //button group// μόνο ένα είναι επιλέξιμο.  Τα //radio buttons// οργανώνονται σε //button groups//. Τα //radio buttons// είναι ανάλογα με τα //check boxes// με την ιδιαιτερότητα ότι μόνο ένα //radio button// μπορεί να είναι επιλεγμένο κάθε φορά στο ίδιο //button group// Επιπλέον, από τα κουμπιά ενός //button group// μόνο ένα είναι επιλέξιμο. 
  
-Κάθε φορά που ο χρήστης επιλέγει ένα radio button τότε δημιουργείται ένα αντικείμενο τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionEvent.html|java.awt.events.ActionEvent]] το οποίο λαμβάνεται από ένα αντικείμενο τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html|ActionListener]] που συνδέεται με το //radio button//. Παράλληλα, δημιουργούνται και δύο αντικείμενα τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ItemEvent.html|java.awt.events.ItemEvent]] ένα αντικείμενο για το button που επιλέχθηκε και ένα αντικείμενο για το button που απο-επιλέχθηκε (εάν υπήρξε τέτοιο), τα οποία λαμβάνονται από ένα αντικείμενο του τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ItemListener.html|ItemListener]]. Συνήθως χρησιμοποιούμε ItemListeners όπως φαίνεται στο παρακάτω παράδειγμα από το site της Oracle.+Κάθε φορά που ο χρήστης επιλέγει ένα radio button τότε δημιουργείται ένα αντικείμενο τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionEvent.html|java.awt.events.ActionEvent]] το οποίο λαμβάνεται από ένα αντικείμενο τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html|ActionListener]] που συνδέεται με το //radio button// 
 + 
 +Παράλληλα, δημιουργούνται και δύο αντικείμενα τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ItemEvent.html|java.awt.events.ItemEvent]] ένα αντικείμενο για το button που επιλέχθηκε και ένα αντικείμενο για το button που απο-επιλέχθηκε (εάν υπήρξε τέτοιο), τα οποία λαμβάνονται από ένα αντικείμενο του τύπου [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ItemListener.html|ItemListener]].  
 + 
 +Παρακάτω δίνονται δύο παραλλαγές του ιδίου προγράμματος **α)** με χρήση [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html|ActionListener]] και **β)** με χρήση [[http://docs.oracle.com/javase/7/docs/api/java/awt/event/ItemListener.html|ItemListener]]. Για τα δύο παραδείγματα που ακολουθούν θα χρειαστείτε τις εικόνες {{:swing:animals.zip|}}. 
 + 
 +==== Παράδειγμα χρήσης ActionListener ====
  
 <code java RadioButtonDemo.java> <code java RadioButtonDemo.java>
Line 18: Line 24:
    images/Pig.gif    images/Pig.gif
  */  */
-public class RadioButtonDemo extends JPanel +public class RadioButtonDemo extends JPanel {
-               implements ActionListener {+
   static String birdString = "Bird";   static String birdString = "Bird";
   static String catString = "Cat";   static String catString = "Cat";
Line 62: Line 67:
  
     //Register a listener for the radio buttons.     //Register a listener for the radio buttons.
-    birdButton.addActionListener(this); +    birdButton.addActionListener(listener); 
-    catButton.addActionListener(this); +    catButton.addActionListener(listener); 
-    dogButton.addActionListener(this); +    dogButton.addActionListener(listener); 
-    rabbitButton.addActionListener(this); +    rabbitButton.addActionListener(listener); 
-    pigButton.addActionListener(this);+    pigButton.addActionListener(listener);
  
     //Set up the picture label.     //Set up the picture label.
Line 92: Line 97:
   }   }
  
-  /** Listens to the radio buttons. */ +  ActionListener listener = new ActionListener() { 
-  public void actionPerformed(ActionEvent e) { +    /* Listens to the radio buttons. */ 
-    picture.setIcon(new ImageIcon(e.getActionCommand() + ".gif"));+    public void actionPerformed(ActionEvent e) { 
 +      picture.setIcon(new ImageIcon(e.getActionCommand() + ".gif")); 
 +    } 
 +  }; 
 + 
 +  /** 
 +   * Create the GUI and show it.  For thread safety, 
 +   * this method should be invoked from the 
 +   * event-dispatching thread. 
 +   */ 
 +  private static void createAndShowGUI() { 
 +    //Create and set up the window. 
 +    JFrame frame = new JFrame("RadioButtonDemo"); 
 +    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 + 
 +    //Create and set up the content pane. 
 +    JComponent newContentPane = new RadioButtonDemo(); 
 +    newContentPane.setOpaque(true); //content panes must be opaque 
 +    frame.setContentPane(newContentPane); 
 + 
 +    //Display the window. 
 +    frame.pack(); 
 +    frame.setVisible(true);
   }   }
 +
 +  public static void main(String[] args) {
 +    //Schedule a job for the event-dispatching thread:
 +    //creating and showing this application's GUI.
 +    javax.swing.SwingUtilities.invokeLater(new Runnable() {
 +      public void run() {
 +        createAndShowGUI();
 +      }
 +    });
 +  }
 +}
 +</code>
 +
 +==== Παράδειγμα χρήσης ItemListener ====
 +
 +<code java RadioButtonDemo2.java>
 +import java.awt.*;
 +import java.awt.event.*;
 +import javax.swing.*;
 +
 +/*
 + * RadioButtonDemo.java requires these files:
 +   images/Bird.gif
 +   images/Cat.gif
 +   images/Dog.gif
 +   images/Rabbit.gif
 +   images/Pig.gif
 + */
 +public class RadioButtonDemo2 extends JPanel {
 +  
 +  static String birdString = "Bird";
 +  static String catString = "Cat";
 +  static String dogString = "Dog";
 +  static String rabbitString = "Rabbit";
 +  static String pigString = "Pig";
 +
 +  JLabel picture;
 +
 +  public RadioButtonDemo2() {
 +    super(new BorderLayout());
 +
 +    //Create the radio buttons.
 +    JRadioButton birdButton = new JRadioButton(birdString);
 +    birdButton.setMnemonic(KeyEvent.VK_B);
 +    birdButton.setSelected(true);
 +
 +    JRadioButton catButton = new JRadioButton(catString);
 +    catButton.setMnemonic(KeyEvent.VK_C);
 +
 +    JRadioButton dogButton = new JRadioButton(dogString);
 +    dogButton.setMnemonic(KeyEvent.VK_D);
 +
 +    JRadioButton rabbitButton = new JRadioButton(rabbitString);
 +    rabbitButton.setMnemonic(KeyEvent.VK_R);
 +
 +    JRadioButton pigButton = new JRadioButton(pigString);
 +    pigButton.setMnemonic(KeyEvent.VK_P);
 +
 +    //Group the radio buttons.
 +    ButtonGroup group = new ButtonGroup();
 +    group.add(birdButton);
 +    group.add(catButton);
 +    group.add(dogButton);
 +    group.add(rabbitButton);
 +    group.add(pigButton);
 +
 +    //Register a listener for the radio buttons.
 +    birdButton.addItemListener(itemListener);
 +    catButton.addItemListener(itemListener);
 +    dogButton.addItemListener(itemListener);
 +    rabbitButton.addItemListener(itemListener);
 +    pigButton.addItemListener(itemListener);
 +
 +    //Set up the picture label.
 +    picture = new JLabel(new ImageIcon(birdString + ".gif"));
 +
 +    //The preferred size is hard-coded to be the width of the
 +    //widest image and the height of the tallest image.
 +    //A real program would compute this.
 +    picture.setPreferredSize(new Dimension(177, 122));
 +
 +
 +    //Put the radio buttons in a column in a panel.
 +    JPanel radioPanel = new JPanel(new GridLayout(0, 1));
 +    radioPanel.add(birdButton);
 +    radioPanel.add(catButton);
 +    radioPanel.add(dogButton);
 +    radioPanel.add(rabbitButton);
 +    radioPanel.add(pigButton);
 +
 +    add(radioPanel, BorderLayout.LINE_START);
 +    add(picture, BorderLayout.CENTER);
 +    setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
 +  }
 +
 +  ItemListener itemListener = new ItemListener() {
 +    public void itemStateChanged(ItemEvent e) {
 +      if(e.getStateChange() == ItemEvent.SELECTED) {
 +        JRadioButton btn = (JRadioButton)e.getItemSelectable();
 +        picture.setIcon(new ImageIcon(btn.getText() + ".gif"));
 +      }
 +    }
 +  };
  
   /**   /**
Line 129: Line 259:
 </code> </code>
  
-Για το παραπάνω παράδειγμα θα χρειαστείτε τις εικόνες {{:swing:animals.zip|}}+ 
  
swing/jradiobutton.txt · Last modified: 2020/03/30 07:48 (external edit)