Java: Checkbox a RadioButton
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (Přidány RadioButton a příklad je společný pro obě třídy.) | m (Doplněno upozornění, že initComponents() musí být v konstruktoru první().) | ||
| (Nejsou zobrazeny 2 mezilehlé verze od 1 uživatele.) | |||
| Řádka 1: | Řádka 1: | ||
| − | [[Category:VSE]][[Category:Škola]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:GUI]] | + | [[Category:VSE]][[Category:Škola]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:GUI]][[Category:Stránky s obrázky]] | 
| == Checkbox == | == Checkbox == | ||
| Řádka 17: | Řádka 17: | ||
| == Příklad použití == | == Příklad použití == | ||
| + | * Vytvoříme jednoduchou aplikaci, která přečte hodnotu checkboxu a skupiny radiobuttonů a zapíše ji do textové oblasti. | ||
| + | [[Image:gui_check-radio.png]] | ||
| + | ; Vysvětlivky | ||
| + | * <code>Kód, který se netýká práce s checkboxem a radio buttonem.</code> | ||
| + | * <code style="color:brown">'''Kód, který musíme napsat my'''</code> | ||
| + | * <code style="color:brown">''Kód, který vytvoří GUI Designer''</code> | ||
| + | |||
|   public class HlavniOkno extends JFrame { |   public class HlavniOkno extends JFrame { | ||
|       JButton btPridej; |       JButton btPridej; | ||
| − | + |       <span style="color:brown">''JCheckBox cbSplneno;'' | |
| − | + |       ''ButtonGroup btGrpPovinne;'' | |
| − |       JRadioButton rbPovinneAno; | + |       ''JRadioButton rbPovinneAno;'' | 
| − |       JRadioButton rbPovinneNe;'' | + |       ''JRadioButton rbPovinneNe;''</span> | 
|       JScrollPane jScrollPane1; |       JScrollPane jScrollPane1; | ||
|       JTextArea taVystup; |       JTextArea taVystup; | ||
|       public HlavniOkno() { |       public HlavniOkno() { | ||
| − |           initComponents(); | + |           initComponents();   | 
| − |           '' | + |           ''// Metoda initComponents() vytvoří prvky GUI,''   | 
| − |           '''this. | + |          ''//  musí se tedy volat první!'' | 
| + | |||
| + |           ''// Nastavení počátečního zatržení:'' | ||
| + |          <span style="color:brown">'''this.cbSplneno.setSelected(true);'''</span> ''// Checkbox bude na začátku zatržen!'' | ||
| + |          ''// Aktivní bude přepínací tlačítko (radiobutton) <code>Ne</code>.'' | ||
| + |          <span style="color:brown">'''this.rbPovinne.setSelected(true);'''</span>  | ||
| + |      } | ||
|       private void initComponents() { |       private void initComponents() { | ||
|           btPridej = new JButton(); |           btPridej = new JButton(); | ||
| − | + |           <span style="color:brown">''cbSplneno = new JCheckBox();''</span> | |
| − | + |           <span style="color:brown">''rbPovinneAno = new JRadioButton();''</span> | |
| − | + |           <span style="color:brown">''rbPovinneNe = new JRadioButton();''</span> | |
| − | + |           <span style="color:brown">''btGrpPovinne = new ButtonGroup();''</span> | |
| − | + |           <span style="color:brown">''btGrpPovinne.add(rbPovinneAno);''</span> | |
| − | + |           <span style="color:brown">''btGrpPovinne.add(rbPovinneNe);''</span> | |
|           jScrollPane1 = new JScrollPane(); |           jScrollPane1 = new JScrollPane(); | ||
| Řádka 55: | Řádka 68: | ||
|           }); |           }); | ||
| − | + |           <span style="color:brown">''cbSplneno.setText("Splněno");''</span> | |
|           ''...'' |           ''...'' | ||
|           pack(); |           pack(); | ||
| Řádka 62: | Řádka 75: | ||
|      private void btPridejActionPerformed(java.awt.event.ActionEvent evt) {                                           |      private void btPridejActionPerformed(java.awt.event.ActionEvent evt) {                                           | ||
|          String novyRadek; |          String novyRadek; | ||
| − |          boolean zatrzeno = '''this.cbSplneno.isSelected();''' | + |          boolean zatrzeno = <span style="color:brown">'''this.cbSplneno.isSelected();'''</span> | 
|          if (zatrzeno) novyRadek = "Splněno"; |          if (zatrzeno) novyRadek = "Splněno"; | ||
|          else          novyRadek = "Není splněno"; |          else          novyRadek = "Není splněno"; | ||
|          novyRadek += " ("; |          novyRadek += " ("; | ||
| − |          boolean povinne = '''this.rbPovinneAno.isSelected();''' | + |          boolean povinne = <span style="color:brown">'''this.rbPovinneAno.isSelected();'''</span> | 
|          if (povinne) novyRadek += "Povinné"; |          if (povinne) novyRadek += "Povinné"; | ||
|          else         novyRadek += "Není povinné"; |          else         novyRadek += "Není povinné"; | ||
Aktuální verze z 29. 1. 2018, 07:09
Checkbox
-  Zatržítko v Javě reprezentuje třída JCheckBoxv balíčkujavax.swing.
-  Stav (zatrženo/není zatrženo) zjistíme pomocí metody isSelected().
-  Změnu stavu provedeme metodou setSelected(...).
Radiobutton
-  Velmi podobné chování má třída JRadioButton. Také metody pro zjištění a nastavení stavu jsou stejné, tedyisSelected()asetSelected(...).
- Skupiny tlačítek
- Tlačítka Radiobutton velmi často seskupujeme do skupin, kdy vždy jen jedno tlačítko je aktivní (chovají se společně jako přepínač).
-  K seskupení tlačítek slouží třída ButtonGroup.
-  Tlačítko do skupiny přidáme metodou buttonGroup.add(jRadioButton).
Příklad použití
- Vytvoříme jednoduchou aplikaci, která přečte hodnotu checkboxu a skupiny radiobuttonů a zapíše ji do textové oblasti.
- Vysvětlivky
-  Kód, který se netýká práce s checkboxem a radio buttonem.
-  Kód, který musíme napsat my
-  Kód, který vytvoří GUI Designer
public class HlavniOkno extends JFrame {
    JButton btPridej;
    JCheckBox cbSplneno;
    ButtonGroup btGrpPovinne;
    JRadioButton rbPovinneAno;
    JRadioButton rbPovinneNe;
    JScrollPane jScrollPane1;
    JTextArea taVystup;
    public HlavniOkno() {
        initComponents(); 
        // Metoda initComponents() vytvoří prvky GUI, 
        //  musí se tedy volat první!
        // Nastavení počátečního zatržení:
        this.cbSplneno.setSelected(true); // Checkbox bude na začátku zatržen!
        // Aktivní bude přepínací tlačítko (radiobutton) Ne.
        this.rbPovinne.setSelected(true); 
    }
    private void initComponents() {
        btPridej = new JButton();
        cbSplneno = new JCheckBox();
        rbPovinneAno = new JRadioButton();
        rbPovinneNe = new JRadioButton();
        btGrpPovinne = new ButtonGroup();
        btGrpPovinne.add(rbPovinneAno);
        btGrpPovinne.add(rbPovinneNe);
        jScrollPane1 = new JScrollPane();
        taVystup = new JTextArea();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        jScrollPane1.setViewportView(taVystup);
        btPridej.setText("Přidej");
        btPridej.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPridejActionPerformed(evt);
            }
        });
        cbSplneno.setText("Splněno");
        ...
        pack();
   }
   private void btPridejActionPerformed(java.awt.event.ActionEvent evt) {                                         
       String novyRadek;
       boolean zatrzeno = this.cbSplneno.isSelected();
       if (zatrzeno) novyRadek = "Splněno";
       else          novyRadek = "Není splněno";
       novyRadek += " (";
       boolean povinne = this.rbPovinneAno.isSelected();
       if (povinne) novyRadek += "Povinné";
       else         novyRadek += "Není povinné";
       novyRadek += ")";
       this.taVystup.setText(
               this.taVystup.getText()+novyRadek+"\n"
           );
   }                                        
   public static void main(String args[]) {
       new HlavniOkno().setVisible(true);
   }
}
				
								
				
