swing:jradiobutton
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| swing:jradiobutton [2018/03/23 11:47] – gthanos | swing:jradiobutton [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Οι κλάσεις ButtonGroup και JRadioButton ===== | ===== Οι κλάσεις ButtonGroup και JRadioButton ===== | ||
| - | Τα //radio buttons// είναι ανάλογα με τα //check boxes// με την ιδιαιτερότητα ότι μόνο ένα button μπορεί να είναι επιλεγμένο κάθε φορά. Τα radio buttons οργανώνονται σε button | + | Τα //radio buttons// οργανώνονται σε //button groups// |
| - | Κάθε φορά που ο χρήστης επιλέγει ένα radio button τότε δημιουργείται ένα αντικείμενο τύπου [[http:// | + | Κάθε φορά που ο χρήστης επιλέγει ένα radio button τότε δημιουργείται ένα αντικείμενο τύπου [[http:// |
| + | |||
| + | Παράλληλα, | ||
| + | |||
| + | Παρακάτω δίνονται δύο παραλλαγές του ιδίου προγράμματος **α)** με χρήση [[http:// | ||
| + | |||
| + | ==== Παράδειγμα | ||
| <code java RadioButtonDemo.java> | <code java RadioButtonDemo.java> | ||
| Line 18: | Line 24: | ||
| | | ||
| */ | */ | ||
| - | public class RadioButtonDemo extends JPanel | + | public class RadioButtonDemo extends JPanel { |
| - | | + | |
| static String birdString = " | static String birdString = " | ||
| static String catString = " | static String catString = " | ||
| 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 87: | Line 92: | ||
| radioPanel.add(pigButton); | radioPanel.add(pigButton); | ||
| - | add(radioPanel, | + | add(radioPanel, |
| add(picture, | add(picture, | ||
| setBorder(BorderFactory.createEmptyBorder(20, | setBorder(BorderFactory.createEmptyBorder(20, | ||
| } | } | ||
| - | /** Listens to the radio buttons. */ | + | |
| - | public void actionPerformed(ActionEvent e) { | + | |
| - | picture.setIcon(new ImageIcon(e.getActionCommand() + " | + | public void actionPerformed(ActionEvent e) { |
| + | picture.setIcon(new ImageIcon(e.getActionCommand() + " | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | /** | ||
| + | * 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(" | ||
| + | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
| + | |||
| + | //Create and set up the content pane. | ||
| + | JComponent newContentPane = new RadioButtonDemo(); | ||
| + | newContentPane.setOpaque(true); | ||
| + | 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' | ||
| + | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
| + | public void run() { | ||
| + | createAndShowGUI(); | ||
| + | } | ||
| + | }); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Παράδειγμα χρήσης ItemListener ==== | ||
| + | |||
| + | <code java RadioButtonDemo2.java> | ||
| + | import java.awt.*; | ||
| + | import java.awt.event.*; | ||
| + | import javax.swing.*; | ||
| + | |||
| + | /* | ||
| + | * RadioButtonDemo.java requires these files: | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | public class RadioButtonDemo2 extends JPanel { | ||
| + | | ||
| + | static String birdString = " | ||
| + | static String catString = " | ||
| + | static String dogString = " | ||
| + | static String rabbitString = " | ||
| + | static String pigString = " | ||
| + | |||
| + | 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 + " | ||
| + | |||
| + | //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, | ||
| + | |||
| + | |||
| + | //Put the radio buttons in a column in a panel. | ||
| + | JPanel radioPanel = new JPanel(new GridLayout(0, | ||
| + | radioPanel.add(birdButton); | ||
| + | radioPanel.add(catButton); | ||
| + | radioPanel.add(dogButton); | ||
| + | radioPanel.add(rabbitButton); | ||
| + | radioPanel.add(pigButton); | ||
| + | |||
| + | add(radioPanel, | ||
| + | add(picture, | ||
| + | setBorder(BorderFactory.createEmptyBorder(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() + " | ||
| + | } | ||
| + | } | ||
| + | }; | ||
| /** | /** | ||
| Line 129: | Line 259: | ||
| </ | </ | ||
| - | Για το παραπάνω παράδειγμα θα χρειαστείτε τις εικόνες {{: | + | |
swing/jradiobutton.1521805624.txt.gz · Last modified: 2018/03/23 11:47 by gthanos
