Avatar billede |shiva Nybegynder
22. april 2008 - 20:53 Der er 8 kommentarer og
1 løsning

Fange hvis en ButtonGroup ikke bliver valgt

Hejsa

Jeg skal lave en der tester om brugeren har husket at vælge en af valg mulighederne i en ButtonGroup. Jeg har prøvet at lave en if, men der kommer en masse fejl. Hvordan skal sådan en laves? min kode er:

    private AbstractAction getAbstractAction1() {
        if(abstractAction1 == null) {
            abstractAction1 = new AbstractAction("abstractAction1", null) {
                public void actionPerformed(ActionEvent evt) {
                    if (buttonGroup1.getSelection().getActionCommand() == null) {
                        System.out.println("fejl");
                    }
                }
            };
        }
        return abstractAction1;
    }
Avatar billede _carsten Nybegynder
22. april 2008 - 21:00 #1
Den nemme og simple.

Lav en instancevariabel og lad din buttongroup sætte den == true
Avatar billede |shiva Nybegynder
22. april 2008 - 21:28 #2
Da jeg ikke har været gang i java så lang tid, bliver jeg lige nød til at have lidt mere hjælp. har prøvet lidt forskelligt med inspiration fra dig, men tror ikke helt jeg kan følge. Det jeg har gjort nu er:

    private boolean test = false;

    public ButtonGroup getButtonGroup1() {
        if(buttonGroup1 == null) {
            buttonGroup1 = new ButtonGroup();
            test = true;
        }
        return buttonGroup1;
    }

    private AbstractAction getAbstractAction1() {
        if(abstractAction1 == null) {
            abstractAction1 = new AbstractAction("abstractAction1", null) {
                public void actionPerformed(ActionEvent evt) {
                    if (test == false) {
                        System.out.println("fejl");
                    } else {
                    resultat = buttonGroup1.getSelection().getActionCommand();
                    resultat = resultat + " " + buttonGroup2.getSelection().getActionCommand();
                    System.out.println(resultat);
                    }
                }
            };
        }

Noget i den stil?
Avatar billede _carsten Nybegynder
22. april 2008 - 21:50 #3
Den er tæt på

                public void actionPerformed(ActionEvent evt) {
                    resultat = buttonGroup1.getSelection().getActionCommand();
                    resultat = resultat + " " + buttonGroup2.getSelection().getActionCommand();
                    System.out.println(resultat);
                      test = true;
                    }
                }


if( test == true){
  // så er det OK at fortsætte !!
}


eller den nemme

if( test ){
  // så er det OK at fortsætte !!
}
Avatar billede |shiva Nybegynder
22. april 2008 - 22:04 #4
Jeg kan ikke få det til at virke, men det er fordi jeg er lidt i tvivl om hvor jeg skal placere if'en. Den action vil jeg også lige fortælle er når man trykker på en knap selvfølgelig, og jeg glemte at skrive return på før. nu ser koden således ud og får stadig NullPointerException

    private AbstractAction getAbstractAction1() {
        if(abstractAction1 == null) {
            abstractAction1 = new AbstractAction("abstractAction1", null) {
                public void actionPerformed(ActionEvent evt) {
                    resultat = buttonGroup1.getSelection().getActionCommand();
                    resultat = resultat + " " + buttonGroup2.getSelection().getActionCommand();
                    System.out.println(resultat);
                    test = true;
                }
            };
        }
        if (test == true) {
        return abstractAction1;
        }
    }
Avatar billede |shiva Nybegynder
22. april 2008 - 22:12 #5
og der kommer selvfølgelig en fejl ved overstoende da jeg lægger return inde i if'en
Avatar billede _carsten Nybegynder
22. april 2008 - 22:38 #6
Et lille eksempel - jeg når ikke mere i dag :)

import javax.swing.JOptionPane;

public class ButtonGroupTest extends javax.swing.JFrame {

    private boolean test = false;

    public ButtonGroupTest() {
        initComponents();
    }


    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new java.awt.FlowLayout());

        jLabel1.setText("Tryk på knappen Valg 1 eller Valg 2 inden du trykker på LUK");
        getContentPane().add(jLabel1);

        jButton1.setText("Valg 1");
        buttonGroup1.add(jButton1);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                knapValg(evt);
            }
        });
        getContentPane().add(jButton1);

        jButton2.setText("Valg 2");
        buttonGroup1.add(jButton2);
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                knapValg(evt);
            }
        });
        getContentPane().add(jButton2);

        jButton3.setText("LUK");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                close(evt);
            }
        });
        getContentPane().add(jButton3);

        pack();
    }

private void knapValg(java.awt.event.ActionEvent evt) {
    test = true;
}

private void close(java.awt.event.ActionEvent evt) {
    if(test)
        System.exit(0);
    else
        JOptionPane.showMessageDialog(this, "Du skal først trykke knappen \"Valg 2\" eller \"Valg 2\"");
}


    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ButtonGroupTest().setVisible(true);
            }
        });
    }


    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
}
Avatar billede _carsten Nybegynder
22. april 2008 - 22:39 #7
Og min brug af ButtonGroup er selvfølgelig ikke nødvendig i dette eksempel - se bort fra den.
Avatar billede |shiva Nybegynder
23. april 2008 - 11:53 #8
Jamen tak for hjælpen jeg har fået det til at fungere :-)

smid et svar så får du 60!
Avatar billede _carsten Nybegynder
23. april 2008 - 21:08 #9
OK :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester