swing:buttons
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| swing:buttons [2018/03/23 11:30] – [Η κλάση JCheckBox] gthanos | swing:buttons [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| ή [[https:// | ή [[https:// | ||
| + | * [[swing: | ||
| + | * [[swing: | ||
| + | * [[swing: | ||
| - | ===== Οι κλάσεις ButtonGroup και JRadioButton ===== | + | | Προηγούμενο: [[:swing: |
| - | + | ||
| - | Τα //radio buttons// είναι ανάλογα με τα //check boxes// με την ιδιαιτερότητα ότι μόνο ένα button μπορεί να είναι επιλεγμένο κάθε φορά. Τα radio buttons οργανώνονται σε button groups. Από τα κουμπιά ενός button group μόνο ένα είναι επιλέξιμο. | + | |
| - | + | ||
| - | Κάθε φορά που ο χρήστης επιλέγει ένα radio button τότε δημιουργείται ένα αντικείμενο | + | |
| - | + | ||
| - | <code java RadioButtonDemo.java> | + | |
| - | + | ||
| - | import java.awt.*; | + | |
| - | import java.awt.event.*; | + | |
| - | import javax.swing.*; | + | |
| - | + | ||
| - | /* | + | |
| - | * RadioButtonDemo.java requires these files: | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | */ | + | |
| - | public class RadioButtonDemo extends JPanel | + | |
| - | | + | |
| - | static String birdString = " | + | |
| - | static String catString = " | + | |
| - | static String dogString = " | + | |
| - | static String rabbitString = " | + | |
| - | static String pigString = " | + | |
| - | + | ||
| - | 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(createImageIcon(" | + | |
| - | + 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, | + | |
| - | } | + | |
| - | + | ||
| - | /** Listens to the radio buttons. */ | + | |
| - | public void actionPerformed(ActionEvent e) { | + | |
| - | picture.setIcon(createImageIcon(" | + | |
| - | + e.getActionCommand() | + | |
| - | + " | + | |
| - | } | + | |
| - | + | ||
| - | /** Returns an ImageIcon, or null if the path was invalid. */ | + | |
| - | protected static ImageIcon createImageIcon(String path) { | + | |
| - | java.net.URL imgURL = RadioButtonDemo.class.getResource(path); | + | |
| - | if (imgURL != null) { | + | |
| - | return new ImageIcon(imgURL); | + | |
| - | } else { | + | |
| - | System.err.println(" | + | |
| - | return null; | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | /** | + | |
| - | * 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(); | + | |
| - | } | + | |
| - | }); | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | Για το παραπάνω παράδειγμα θα χρειαστείτε τις εικόνες {{: | + | |
swing/buttons.1521804601.txt.gz · Last modified: 2018/03/23 11:30 (external edit)
