Toon posts:

[Java] JRadioButtonMenuItem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet een formule 1 java applicatie maken waarbij ik in het menu bijvoorbeeld voor coureur kies en daarna een JRadioButtonMenuItem met de naam van een coureur. Ik wil dat ie daarna een query uitvoert en de resultaten van die query weergeeft. Hoe kan ik ervoor zorgen dat ie dan in die query het nummer gebruikt van het geselecteerde JRadioButtonMenuItem. Ik dacht zelf gewoon plaats_id de waarde van i, zoals hieronder gebruikt wordt, te geven. Ik wil tenslotte alleen het nummertje hebben van degene die geselecteerd is. Dit werkte helaas dus niet. Is er voor een JRadioButtonMenuItem ook een zelfde soort functie als isSelected() , maar dan om te zien het hoeveelste nummer geselecteerd is?
code:
1
2
3
 for ( int i = 0; i < wijzigenItems.length; i++ ) 
  if ( wijzigenItems[ i ].isSelected() ) { 
   int plaats_id = i ;


Alvast heel erg bedankt

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Wat werkt er dan niet? Het idee van je opzet lijkt me op zich goed.
Je zou ook gewoon aan iedere JRadioButtonMenuItem een ItemListener kunnen hangen die als de button geselecteerd wordt even de juiste query uitvoert. Moet niet zo moeilijk zijn en is waarschijnlijk netter en uitbreidbaarder dan wat je nu doet...

Verwijderd

Topicstarter
Er hangt op de volgende wijze al aan allemaal een ActionListener.

code:
1
2
3
4
5
6
7
8
9
10
wijzigenItems[ i ].addActionListener(
    new ActionListener() {
                  public void actionPerformed( ActionEvent e )
                  {
                    Statement statement;
                    ResultSet resultSet;

                     for ( int i = 0; i < wijzigenItems.length; i++ )
                            if ( wijzigenItems[ i ].isSelected() ) {
                                                         plaats_id = i;


Nu wilde ik plaats_id gelijk stellen aan i, maar op de manier waarop ik dat nu gedaan heb werkt dat dus niet. En om nou voor elk item het op de volgende manier te gaan doen lijkt me niet echt handig omdat het er daarvoor veel te veel zijn. Alleen wanneer daar dus geen andere oplossing voor is.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
wijzigenItems[ i ].addActionListener(
              new ActionListener() {
                  public void actionPerformed( ActionEvent e )
                  {
                        Statement statement;
                        ResultSet resultSet;

                     for ( int i = 0; i < wijzigenItems.length; i++ )
             if ( wijzigenItems[ 1 ].isSelected() ) {
                 plaats_id = 1; }
                                                 if ( wijzigenItems[ 2 ].isSelected() ) {
                 plaats_id = 2; }



String query3 = "Select * from uitslagen2 where plaats_id=" + plaats_id + ";";

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Je vertelt trouwens nog steeds niet wat er niet werkt, maar goed.
ActionListeners zijn hier niet echt makkelijk voor. Probeer het eens zo (zoals ik al eerder voorstelde):
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class CoureurItemListener implements ItemListener
{
  QueryObject qo;
  int plaats_id;

  CoureurItemListener( QueryObject qo, int plaats_id )
  {
      this.qo = qo;
      this.plaats_id = plaats_id;
  }

  public void itemStateChanged( ItemEvent e )
  {
      if( e.getStateChange() == ItemEvent.SELECTED )
        qo.queryCoureur( plaats_id );
  }
}

Hier is dat query-object even een placeholder voor wat voor object of methode je dan ook gebruikt om queries uit te voeren.
Deze itemlistener kun je nu aan iedere JRadioButtonMenuItem hangen:
Java:
1
wijzigenItems[i].addItemListener( new CoureurItemListener(queryObject, plaats_id) );

Dit lijkt me toch een stuk makkelijker dan telkens die hele array af te lopen?

Verwijderd

Topicstarter
Ik heb geprobeerd uit te leggen wat er niet lukte, helaas was dat dus niet duidelijk genoeg. Daarnaast moet ik beter lezen wat jij schrijft.

Ik heb geprobeerd jouw code erin te krijgen en helemaal te begrijpen zodat ik dat queryobject door de juiste dingen zou vervangen. Dit is helaas niet gelukt, ook al snap ik heel goed dat jouw oplossing beter is dan de mijne.

Toch bedankt voor de moeite.