User Tools

Site Tools


swing:buttons

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 Both sides next revision
swing:buttons [2018/03/23 11:29]
gthanos [Η κλάση JButton]
swing:buttons [2018/03/23 11:30]
gthanos [Η κλάση JCheckBox]
Line 5: Line 5:
  
  
-===== Η κλάση JCheckBox ===== 
- 
-Ένα //check box// έχει δύο δυνατές καταστάσεις //α)// επιλεγμένο και //β)// απο-επιλεγμένο. Κάθε //check box// υλοποιείται από την κλάση [[https://docs.oracle.com/javase/7/docs/api/javax/swing/JCheckBox.html|JCheckBox]]. Δείτε το παρακάτω παράδειγμα χρήσης της κλάσης JCheckBox από το [[https://docs.oracle.com/javase/tutorial/uiswing/components/button.html|site της Oracle]]. 
- 
-<code java CheckBoxDemo.java> 
-import java.awt.*; 
-import java.awt.event.*; 
-import javax.swing.*; 
- 
-/* 
- * CheckBoxDemo.java requires 16 image files in the images/geek 
- * directory:  
- * geek-----.gif, geek-c---.gif, geek--g--.gif, geek---h-.gif, geek----t.gif, 
- * geek-cg--.gif, ..., geek-cght.gif. 
- */ 
-public class CheckBoxDemo extends JPanel 
-              implements ItemListener { 
-  JCheckBox chinButton; 
-  JCheckBox glassesButton; 
-  JCheckBox hairButton; 
-  JCheckBox teethButton; 
- 
-  StringBuffer choices; 
-  JLabel pictureLabel; 
- 
-  public CheckBoxDemo() { 
-    super(new BorderLayout()); 
- 
-    //Create the check boxes. 
-    chinButton = new JCheckBox("Chin"); 
-    chinButton.setMnemonic(KeyEvent.VK_C); 
-    chinButton.setSelected(true); 
- 
-    glassesButton = new JCheckBox("Glasses"); 
-    glassesButton.setMnemonic(KeyEvent.VK_G); 
-    glassesButton.setSelected(true); 
- 
-    hairButton = new JCheckBox("Hair"); 
-    hairButton.setMnemonic(KeyEvent.VK_H); 
-    hairButton.setSelected(true); 
- 
-    teethButton = new JCheckBox("Teeth"); 
-    teethButton.setMnemonic(KeyEvent.VK_T); 
-    teethButton.setSelected(true); 
- 
-    //Register a listener for the check boxes. 
-    chinButton.addItemListener(this); 
-    glassesButton.addItemListener(this); 
-    hairButton.addItemListener(this); 
-    teethButton.addItemListener(this); 
- 
-    //Indicates what's on the geek. 
-    choices = new StringBuffer("cght"); 
- 
-    //Set up the picture label 
-    pictureLabel = new JLabel(); 
-    pictureLabel.setFont(pictureLabel.getFont().deriveFont(Font.ITALIC)); 
-    updatePicture(); 
- 
-    //Put the check boxes in a column in a panel 
-    JPanel checkPanel = new JPanel(new GridLayout(0, 1)); 
-    checkPanel.add(chinButton); 
-    checkPanel.add(glassesButton); 
-    checkPanel.add(hairButton); 
-    checkPanel.add(teethButton); 
- 
-    add(checkPanel, BorderLayout.LINE_START); 
-    add(pictureLabel, BorderLayout.CENTER); 
-    setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); 
-  } 
- 
-  /** Listens to the check boxes. */ 
-  public void itemStateChanged(ItemEvent e) { 
-    int index = 0; 
-    char c = '-'; 
-    Object source = e.getItemSelectable(); 
- 
-    if (source == chinButton) { 
-      index = 0; 
-      c = 'c'; 
-    } else if (source == glassesButton) { 
-      index = 1; 
-      c = 'g'; 
-    } else if (source == hairButton) { 
-      index = 2; 
-      c = 'h'; 
-    } else if (source == teethButton) { 
-      index = 3; 
-      c = 't'; 
-    } 
- 
-    //Now that we know which button was pushed, find out 
-    //whether it was selected or deselected. 
-    if (e.getStateChange() == ItemEvent.DESELECTED) { 
-      c = '-'; 
-    } 
- 
-    //Apply the change to the string. 
-    choices.setCharAt(index, c); 
- 
-    updatePicture(); 
-  } 
- 
-  protected void updatePicture() { 
-    //Get the icon corresponding to the image. 
-    ImageIcon icon = new ImageIcon( 
-                  "geek/geek-" 
-                  + choices.toString() 
-                  + ".gif"); 
-    pictureLabel.setIcon(icon); 
-    pictureLabel.setToolTipText(choices.toString()); 
-    if (icon == null) { 
-      pictureLabel.setText("Missing Image"); 
-    } else { 
-      pictureLabel.setText(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("CheckBoxDemo"); 
-    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
- 
-    //Create and set up the content pane. 
-    JComponent newContentPane = new CheckBoxDemo(); 
-    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> 
- 
-Για να εκτελέσετε με επιτυχία το παραπάνω πρόγραμμα, θα χρειαστείτε επιπλέον τις φωτογραφίες που περιέχονται στο αρχείο zip {{:swing:geek-images.zip|}}. 
  
 ===== Οι κλάσεις ButtonGroup και JRadioButton ===== ===== Οι κλάσεις ButtonGroup και JRadioButton =====
swing/buttons.txt · Last modified: 2018/03/27 19:38 (external edit)