[ Cyberghost @ 24.08.2006. 08:32 ] @
Evo koda:

Code:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class RadioDugmad extends JFrame 
{
        public static void main(String args[])
    {
        JTextField jtf=new JTextField(5);
        
        JRadioButton jrb1=new JRadioButton("C");
        JRadioButton jrb2=new JRadioButton("C++");
        JRadioButton jrb3=new JRadioButton("Java");
        
        ButtonGroup bg=new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);
        bg.add(jrb2);
        
        JFrame frame=new JFrame("Primer za Radio dugmice");
        frame.setLayout(new FlowLayout(FlowLayout.CENTER));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(250,100);
        
        Container cont=frame.getContentPane();
        cont.add(jrb1,BorderLayout.WEST);
        cont.add(jrb2,BorderLayout.WEST);
        cont.add(jrb3,BorderLayout.WEST);        
        cont.add(jtf,BorderLayout.SOUTH);
        
        frame.setVisible(true);
            
    }
}


Potrebno je kada kliknem na neko od dugmica iz grupe da mi ispise njego nazi u Text polju. Pise u knjizi da treba da dogadjaj obradim metoda actionPerformed a metoda getActionCommand() vraca tekst pridruzenom dugmetu!
Kako ovo najjednostavnije ugraditi u kod ? Hvala

P.S. U knjizi je to uradjeno pomocu Appleta ali ja hocu sa JFrame.

pozdrav
[ rj444 @ 24.08.2006. 10:43 ] @
Dodas svakom objektu JRadioButton isti Listener, koji ti napises i implmentiras metodu actionPerformed().
A u toj metodi imas kao parametar prosledjen dogadja Event e.
Od dogadjaja mozes da dobijes Object source koji je u stvari jedan od JRadioButton-a.
Uradis "kastovanje" tog objekta u JRadioButton i metodom getActionCommand() dobijas tekst.

Kompletan kod bi bio: (imao si jedan bag - zaboravio si da Java radio button dodas u grupu)

Code:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class RadioDugmad extends JFrame 
{

        //ova klasa je staticka  zato sto si ti napisao da se sve radi u main-u. Inace se inicijalizacija radi u konstruktoru, pa bi ova klasa bila nestaticka
        static class MojListener implements ActionListener {
            private JTextField txt; //ovo treba ako hoces da prikazes u JTextField-u nesto           
            
            public MojListener(JTextField txt) {
                super();
                this.txt=txt;
            }
            
            public void actionPerformed(ActionEvent e) {
                //ovo ispod radi zato sto ces na objekte JComboBox da "nakacis" ovaj Listener
                JRadioButton src = (JRadioButton)e.getSource();
                //evo onoga sto ti treba
                String tekst = src.getActionCommand();
                //da proverimo da li je to to
                txt.setText(tekst);
            }
            
        }

        public static void main(String args[])
    {
        JTextField jtf=new JTextField(5);
        
        JRadioButton jrb1=new JRadioButton("C");
        JRadioButton jrb2=new JRadioButton("C++");
        JRadioButton jrb3=new JRadioButton("Java");
        
        //ovde dodamo svim jrb-ovima po jedan Listener
        jrb1.addActionListener(new MojListener(jtf));
        jrb2.addActionListener(new MojListener(jtf));
        jrb3.addActionListener(new MojListener(jtf));
        
        ButtonGroup bg=new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);
        bg.add(jrb3);
        
        JFrame frame=new JFrame("Primer za Radio dugmice");
        frame.setLayout(new FlowLayout(FlowLayout.CENTER));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(250,100);
        
        Container cont=frame.getContentPane();
        cont.add(jrb1,BorderLayout.WEST);
        cont.add(jrb2,BorderLayout.WEST);
        cont.add(jrb3,BorderLayout.WEST);        
        cont.add(jtf,BorderLayout.SOUTH);
        
        frame.setVisible(true);
            
    }
}