/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
JRadioButton
Fra : -=- Siggy -=-


Dato : 01-09-01 08:18

Hej,

jeg har nogle JRadioButtons som er indeholdt i et JPanel. Hvordan tester jeg
hvilken knap der er valgt, således at når jeg fx trykker på JButton så
skrives der i output vinduet...RadioButton1 er aktivt.

Er det desuden muligt at fravælge en radioknap ligesom checkbox ?

Med venlig hilsen

Rene



 
 
Lars Dam (01-09-2001)
Kommentar
Fra : Lars Dam


Dato : 01-09-01 09:30

On Sat, 1 Sep 2001 09:18:11 +0200, "-=- Siggy -=-"
<riversen@get2net.dk> wrote:

>Hej,
>
>jeg har nogle JRadioButtons som er indeholdt i et JPanel. Hvordan tester jeg
>hvilken knap der er valgt, således at når jeg fx trykker på JButton så
>skrives der i output vinduet...RadioButton1 er aktivt.

pkt.1 Add en actionlisterner til hver af dine RB's

I actionevent objektet (som du får i actionperformed) er der
forskellige muligheder for at se hvilken der er trykket:
1) getSource() metoden returnere hvilken faktisk RB der blev trykket
2) du kan set'te en 'actioncommand' på hver af dine RB's også check
actioncommand'en fra actionevent'en

>Er det desuden muligt at fravælge en radioknap ligesom checkbox ?

Yep - setSelected( false );

>Med venlig hilsen
>
>Rene
>

vh. ld

-=- Siggy -=- (01-09-2001)
Kommentar
Fra : -=- Siggy -=-


Dato : 01-09-01 09:39


"Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote in message
news:gp41ptg2it0ial1reenjrh17gmim9s1qs0@4ax.com...
> On Sat, 1 Sep 2001 09:18:11 +0200, "-=- Siggy -=-"
> <riversen@get2net.dk> wrote:
>
> >Hej,
> >
> >jeg har nogle JRadioButtons som er indeholdt i et JPanel. Hvordan tester
jeg
> >hvilken knap der er valgt, således at når jeg fx trykker på JButton så
> >skrives der i output vinduet...RadioButton1 er aktivt.
>
> pkt.1 Add en actionlisterner til hver af dine RB's
>
> I actionevent objektet (som du får i actionperformed) er der
> forskellige muligheder for at se hvilken der er trykket:
> 1) getSource() metoden returnere hvilken faktisk RB der blev trykket

det er ikke når jeg trykker på selve radioknappen jeg skal hve getSource().
Jeg trykker på en JButton hvor jeg så skal få at vide, hvilke(n)
radiobutton(s) der er valgte.
Tror du misforstod det lidt.

> 2) du kan set'te en 'actioncommand' på hver af dine RB's også check
> actioncommand'en fra actionevent'en
>
> >Er det desuden muligt at fravælge en radioknap ligesom checkbox ?
>
> Yep - setSelected( false );
>
> >Med venlig hilsen
> >
> >Rene
> >
>
> vh. ld



Lars Dam (01-09-2001)
Kommentar
Fra : Lars Dam


Dato : 01-09-01 10:12

On Sat, 1 Sep 2001 10:38:50 +0200, "-=- Siggy -=-"
<riversen@get2net.dk> wrote:

>
>det er ikke når jeg trykker på selve radioknappen jeg skal hve getSource().
>Jeg trykker på en JButton hvor jeg så skal få at vide, hvilke(n)
>radiobutton(s) der er valgte.
>Tror du misforstod det lidt.

myradiobutton.isSelected()?

>>
>> >Med venlig hilsen
>> >
>> >Rene
>

vh. ld


-=- Siggy -=- (01-09-2001)
Kommentar
Fra : -=- Siggy -=-


Dato : 01-09-01 10:53


"Lars Dam" <larsdamXXspamXXprotectionXX@post2.tele.dk> wrote in message
news:4h91ptc907eibvdegibn38urplovgacn2l@4ax.com...
> On Sat, 1 Sep 2001 10:38:50 +0200, "-=- Siggy -=-"
> <riversen@get2net.dk> wrote:
>
> >
> >det er ikke når jeg trykker på selve radioknappen jeg skal hve
getSource().
> >Jeg trykker på en JButton hvor jeg så skal få at vide, hvilke(n)
> >radiobutton(s) der er valgte.
> >Tror du misforstod det lidt.
>
> myradiobutton.isSelected()?

ja, det er jo det jeg spørger om Tror måske det kan bruges. Jeg pusler
lidt med det.

>
> >>
> >> >Med venlig hilsen
> >> >
> >> >Rene
> >
>
> vh. ld
>



Filip Larsen (01-09-2001)
Kommentar
Fra : Filip Larsen


Dato : 01-09-01 11:07

Siggy skrev

> det er ikke når jeg trykker på selve radioknappen jeg skal hve
getSource().
> Jeg trykker på en JButton hvor jeg så skal få at vide, hvilke(n)
> radiobutton(s) der er valgte.

Brug ButtonGroup.getSelection() for at få den valgte ButtonModel. Eksempel:

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

class MyRadioButtons extends JPanel {
protected ButtonGroup bg = new ButtonGroup();

public MyRadioButtons() {
addRadioButton("small");
addRadioButton("medium");
addRadioButton("large");
JButton b = new JButton("Test");
b.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ev) {
if ( bg.getSelection() != null ) {
System.out.println( bg.getSelection().getActionCommand() );
}
}
});
add(b);
}

public void addRadioButton(String text) {
JRadioButton b = new JRadioButton(text);
b.setActionCommand(text);
if (bg.getButtonCount() == 0) b.setSelected(true);
add(b);
bg.add(b);
}
}

public class RadioButtonTest extends JFrame {
public RadioButtonTest() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add( new MyRadioButtons() );
}

public static void main(String[] args) {
RadioButtonTest frame = new RadioButtonTest();
frame.pack();
frame.show();
}
}

Se mere om ButtonGroup på:
http://java.sun.com/j2se/1.3/docs/api/javax/swing/ButtonGroup.html


Mvh,
--
Filip Larsen <filip.larsen@mail.dk>




-=- Siggy -=- (01-09-2001)
Kommentar
Fra : -=- Siggy -=-


Dato : 01-09-01 11:42

Tak Filip,

det hjalp også. Jeg har prøvet at bruge getSelection() på mine button groups
men det jeg får retur bliver udskrevet som

javax.swing.JToggleButton$ToggleButtonModel@581784

hvordan får jeg selve navnet på knappen...eller teksten ved knappen?



/Rene




Filip Larsen (01-09-2001)
Kommentar
Fra : Filip Larsen


Dato : 01-09-01 15:10

Siggy skrev

> Jeg har prøvet at bruge getSelection() på mine button groups
> men det jeg får retur bliver udskrevet som
>
> javax.swing.JToggleButton$ToggleButtonModel@581784
>
> hvordan får jeg selve navnet på knappen...eller teksten ved knappen?

ButtonGroup.getSelection giver en reference til en ButtonModel der ikke
umiddelbart giver adgang til den tilsvarende JRadioButton. En måde at gøre
det på er at kalde JRadionButton.setActionCommand(String) med den streng du
gerne vil have og så hente den valgte fra modellen med
ButtonModel.getActionCommand(). Hvis du hellere vil have adgang til selve
knappen kan du lave noget a'la RadioButtonPanel klassen i nedstående
eksempel. Metoden getSelected gør det du vil.


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

class RadioButtonPanel extends JPanel {

protected ButtonGroup bg = new ButtonGroup();

public RadioButtonPanel(String title) {
super( new GridLayout(0,1) );
setBorder( new TitledBorder(title) );
}

// Override JPanel.add method to detect adding of AbstractButtons.
// Test for subclasses of AbstractButton instead if needed.
// Do this for the other add methods too if needed.
public Component add(Component comp) {
if (comp instanceof AbstractButton) bg.add((AbstractButton)comp);
return super.add(comp);
}

public AbstractButton getSelected() {
java.util.Enumeration e = bg.getElements();
while (e.hasMoreElements()) {
AbstractButton b = (AbstractButton) e.nextElement();
if (b.isSelected()) return b;
}
return null;
}
}

public class RadioButtonTest extends JFrame {

public RadioButtonTest() {
setDefaultCloseOperation(EXIT_ON_CLOSE);

final RadioButtonPanel radioPanel = new RadioButtonPanel("size");
radioPanel.add( new JRadioButton("small") );
radioPanel.add( new JRadioButton("medium") );
radioPanel.add( new JRadioButton("large") );
getContentPane().add(radioPanel);

JButton b = new JButton("Test");
b.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ev) {
AbstractButton b = radioPanel.getSelected();
System.out.println("size selected: " + (b != null ? b.getText() :
"none") );
}
});
getContentPane().add(b,BorderLayout.SOUTH);
}

public static void main(String[] args) {
RadioButtonTest frame = new RadioButtonTest();
frame.pack();
frame.show();
}
}



Mvh,
--
Filip Larsen <filip.larsen@mail.dk>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste