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
swing:jradiobutton [2018/03/23 11:50]
gthanos
swing:jradiobutton [2020/03/30 07:48]
Line 1: Line 1:
-===== Οι κλάσεις ButtonGroup και JRadioButton ===== 
- 
-Τα //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. 
- 
-<code java RadioButtonDemo.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 RadioButtonDemo extends JPanel 
-               implements ActionListener { 
-  static String birdString = "Bird"; 
-  static String catString = "Cat"; 
-  static String dogString = "Dog"; 
-  static String rabbitString = "Rabbit"; 
-  static String pigString = "Pig"; 
- 
-  JLabel picture; 
- 
-  public RadioButtonDemo() { 
-    super(new BorderLayout()); 
- 
-    //Create the radio buttons. 
-    JRadioButton birdButton = new JRadioButton(birdString); 
-    birdButton.setMnemonic(KeyEvent.VK_B); 
-    birdButton.setActionCommand(birdString); 
-    birdButton.setSelected(true); 
- 
-    JRadioButton catButton = new JRadioButton(catString); 
-    catButton.setMnemonic(KeyEvent.VK_C); 
-    catButton.setActionCommand(catString); 
- 
-    JRadioButton dogButton = new JRadioButton(dogString); 
-    dogButton.setMnemonic(KeyEvent.VK_D); 
-    dogButton.setActionCommand(dogString); 
- 
-    JRadioButton rabbitButton = new JRadioButton(rabbitString); 
-    rabbitButton.setMnemonic(KeyEvent.VK_R); 
-    rabbitButton.setActionCommand(rabbitString); 
- 
-    JRadioButton pigButton = new JRadioButton(pigString); 
-    pigButton.setMnemonic(KeyEvent.VK_P); 
-    pigButton.setActionCommand(pigString); 
- 
-    //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.addActionListener(this); 
-    catButton.addActionListener(this); 
-    dogButton.addActionListener(this); 
-    rabbitButton.addActionListener(this); 
-    pigButton.addActionListener(this); 
- 
-    //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)); 
-  } 
- 
-  /** Listens to the radio buttons. */ 
-  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> 
- 
-Για το παραπάνω παράδειγμα θα χρειαστείτε τις εικόνες {{:swing:animals.zip|}} 
  
swing/jradiobutton.txt · Last modified: 2020/03/30 07:48 (external edit)