JRadioButton
Tato komponenta se svým tvarem podobá JCheckBoxu, tlačítko je však kulaté. Od check boxů se odlišuje způsobem výběru, v případě skupiny radio buttonů může být v jednom okamžiku vybráno pouze jedno tlačítko. Radiobuttony mohou být používány samostatně nebo sdružovány do skupiny prostřednictvím komponenty JButtonGroup. Pokud umístíme radio buttony na formulář, aniž je sdružíme do skupiny, mohou být vybírány nezávisle na sobě (nevědí vzájemně o svém stavu). To, že je sdružíme do skupiny, způsobí, že vybraný radiobutton informuje ostatní radio buttony skupiny, takže již nemohou být následně vybrány. K dispozici je větší množství konstruktorů, uveďme tyto:JRadioButton();
JRadioButton(String text);
JRadioButton(String text, boolean selected);
Metoda | Popis |
isSelected() | Získání stavu checkboxu. |
setSelected() | Nastavení stavu checkboxu. |
add(AbstractButton b) | Přidání tlačítka do skupiny. |
remove(AbstractButton b) | Odstranění tlačítka ze skupiny. |
getButtonCount() | Zjistí počet kompnent ve skupině. |
getSelection() | Vrací odkaz na zvolené tlačítko. |
isSelected(ButtonModel m) | Získání stavu tlačítka. |
setSelected(ButtonModel m, boolean status) | Nastavení stavu tlačítka. |
První konstruktor vytvoří prázdný nevybraný radio button , druhý konstruktor nevybraný radio button s popisem, třetí konstruktor radio button s popisem, u kterého můžeme zvolit výchozí stav. V praxi postupujeme nejčastěji tak, že vytvoříme požadovaný počet radio buttonů a následně každý z nich přiřadíme
do skupiny. Přehled nejčastěji používaných metod u JradioButtonů. Při práci s třídou ButtonGroup je k dispozici jediný konstruktor
ButtonGroup();
vytvářejí prázdnou skupinu radiobuttonů. Nejpoužívanější metody při práci s třídou ButtonGroup.
Při změně stavu radiobuttonu je generována událost, kterou lze odchytit prostřednictví rozhraní ItemListener za použití metody itemStateChanged().
Práci s radiobuttony si ukážeme na následujícím příkladu: na formuláři bude trojice radiobuttonů sdružených v buttonmodelu a jeden label informující, které tlačítko bylo stlačeno. Nové radiobuttony vytvoříme pomocí konstrukce
JRadioButton rb1=new JRadioButton(Prvni);
JRadioButton rb2=new JRadioButton(Druhy);
JRadioButton rb3=new JRadioButton(Treti);
Požadujeme, aby mohlo být stisknuto pouze jedno z těchto tlačítek. Vytvoříme proto nový buttongroup a přidáme do něj vytvořené radiobuttony.
ButtonGroup bm=new ButtonGroup();
bm.add(rb1);
bm.add(rb2);
bm.add(rb3);
Zdrojový kód k příkladu.
public class Radiobuttony extends JFrame {
private JRadioButton rb1, rb2, rb3;
private JLabel l;
public Radiobuttony(int vyska, int sirka) {
this.setSize(vyska, sirka);
this.setTitle("Radiobuttony");
rb1=new JRadioButton ("První");
rb2=new JRadioButton ("Druhy");
rb3=new JRadioButton ("Treti");
l=new JLabel();
this.getContentPane().add(rb1);
this.getContentPane().add(rb2);
this.getContentPane().add(rb3);
this.getContentPane().add(l);
this.setLayout(new GridLayout(4,1));
rb1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
rb1Changed(e);
}
});
rb2.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
rb2Changed(e);
}
});
rb3.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
rb3Changed(e);
}
});
Metoda | Popis |
setText(String text) | Nastavení popisu. |
getText() | Získání popisu. |
setEditable(bool b) | Nastavení, zda komponenta je/není read only. |
}
public void rb1Changed(ItemEvent e)
{
if(rb1.isSelected()) l.setText("Prvni");
}
public void rb2Changed(ItemEvent e)
{
if(rb2.isSelected()) l.setText("Druhy");
}
public void rb3Changed(ItemEvent e)
{
if(rb3.isSelected()) l.setText("Treti");
}
}
Autor: Filip Koval