swing:jcheckbox

Differences

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

Link to this comparison view

Previous revision
swing:jcheckbox [2018/03/23 11:29]
gthanos created
swing:jcheckbox [2020/03/30 07:29]
Line 1: Line 1:
-===== Η κλάση 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|}}. 
  
swing/jcheckbox.txt · Last modified: 2020/03/30 07:29 (external edit)