checkbox event

  • Onderwerp starter Onderwerp starter QuuN
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

QuuN

Gebruiker
Lid geworden
1 aug 2007
Berichten
30
allereerst. ik ben nog maar een beginneling met java dus de vraag is waarschijnlijk heel erg simpel en excuseer me dan ook voor mijn 'domme' vraag.

Ik heb in een GUI een checkbox staan. Wat ik wil, is dat als deze wordt aangevinkt, dat dan 4 comboboxen in beeld komen.
Nu is het zo, dat als ik op de button start druk en de box heb aangevinkt, dat de comboboxen dan pas tevoorschijn komen.
Vervolgens gaan ze ook niet meer weg als ik de checkbox uitvink

de hele code is een beetje groot maar dit is volgens mij het relevante deel:
checkbox zelf:
Code:
      checkb = new Checkbox();
      checkb.setBounds(25,210,15,15);
      checkb.setState(false);
      pane6.add(checkb);

methode om comboboxen zichtbaar te maken:
Code:
    private void getCheckState()
    {
        if(checkb.getState() == true)
        {
            combobox2.setVisible(true);
            combobox3.setVisible(true);
            combobox4.setVisible(true);
            combobox5.setVisible(true);
            
        }
        slgbFrame_Logs.repaint();
    }

deel waar ik dit wil gebruiken
Code:
start.addActionListener (new ActionListener() 
        { public void actionPerformed (ActionEvent event)
          {
              if(checkb.getState() == true)
              {
                    getCheckState();
                    slgbFrame_Logs.repaint();

Mvg

Koen
 
Laatst bewerkt:
Hier heb je een voorbeeldapplet van hoe je dit voor elkaar zou kunnen krijgen:

Code:
import javax.swing.*;

public class checkbClass extends java.applet.Applet {

    private JCheckBox checkb = new JCheckBox("Checkbox");
    JComboBox jComboBox1 = new JComboBox();
    JComboBox jComboBox2 = new JComboBox();
    JComboBox jComboBox3 = new JComboBox();
    JComboBox jComboBox4 = new JComboBox();

    @Override
    public void init() {
        checkb.setSelected(false);
        checkb.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                checkbActionPerformed(evt);
            }
        });
        this.add(checkb);
        makeComboboxes();
        
    }

    private void checkbActionPerformed(java.awt.event.ActionEvent evt) {
        jComboBox1.setVisible(checkb.isSelected());
        jComboBox2.setVisible(checkb.isSelected());
        jComboBox3.setVisible(checkb.isSelected());
        jComboBox4.setVisible(checkb.isSelected());
    }

    private void makeComboboxes() {
        jComboBox1.setVisible(false);
        jComboBox2.setVisible(false);
        jComboBox3.setVisible(false);
        jComboBox4.setVisible(false);
        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
        jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
        jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
        jComboBox4.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
        jComboBox1.setBounds(50, 75, 50, 15);
        jComboBox2.setBounds(50, 100, 50, 15);
        jComboBox3.setBounds(50, 125, 50, 15);
        jComboBox4.setBounds(50, 150, 50, 15);
        this.add(jComboBox1);
        this.add(jComboBox2);
        this.add(jComboBox3);
        this.add(jComboBox4);
    }
}

Als je hier iets niet van snapt. Graag even zeggen wat je precies niet snapt.
 
Laatst bewerkt:
als ik dat toepas, dan krijg ik de foutmelding dat de methode isSelected en setSelected niet bekend zijn. Code snap ik verder wel maar kom nie verder door die errors.

mijn comboboxen zijn trouwens als volgt gemaakt
Code:
      combobox5 = new JComboBox();
      String[] strmenuke = {"05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16"};
        for( int i=0 ; i<strmenuke.length ; i++ ){
            combobox5.addItem( strmenuke[i] );
        }
      combobox5.setBounds(200,210,50,25);
      pane6.add(combobox5);   
      combobox5.setVisible(false);

ik neem aan dat dat hetzelfde is als bij makecomboboxes van jouw voorbeeld?
zelfde vraag voor het aanmaken van een checkbox.. is die 'methode' (niet javamethode) ook goed?
 
Laatst bewerkt:
hmmz....
Welke java versie heb je op je computer staan?

dat kan je nakijken dmv:

- start
- uitvoeren
- intypen: cmd
- [enter]
- intypen: java -version
- [enter]
 
build 1.6.0_06-b02.. ik zal eens kijken voor een nieuwere versie
 
ik heb alles nog in 1 klasse zitten (GUI klasse), en aangezien deze vrij groot is zal ik alleen de pane posten die relevant is.

Code:
      combobox5 = new JComboBox();
      String[] strmenuke = {"05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16"};
        for( int i=0 ; i<strmenuke.length ; i++ ){
            combobox5.addItem( strmenuke[i] );
        }
      combobox5.setBounds(200,210,50,25);
      pane6.add(combobox5);   
      combobox5.setVisible(false);

      combobox2 = new JComboBox();
      String[] strchassis = {"00", "30"};
        for( int i=0 ; i<strchassis.length ; i++ ){
            combobox2.addItem( strchassis[i] );
        }
      combobox2.setBounds(250,210,50,25);
      pane6.add(combobox2);
      combobox2.setVisible(false);
      
      combobox3 = new JComboBox();
      String[] strmenu2 = {"05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"};
        for( int i=0 ; i<strmenu2.length ; i++ ){
            combobox3.addItem( strmenu2[i] );
        }
      combobox3.setBounds(200,255,50,25);
      pane6.add(combobox3); 
      combobox3.setVisible(false);

      combobox4 = new JComboBox();
      String[] strchassis2 = {"00", "30"};
        for( int i=0 ; i<strchassis2.length ; i++ ){
            combobox4.addItem( strchassis2[i] );
        }
      combobox4.setBounds(250,255,50,25);
      pane6.add(combobox4);
      combobox4.setVisible(false);
        
        start = new JButton();
        start.setBounds(25,120,120,25);
        start.setBackground(new Color(00113377));
        start.setFont(new Font("Dialog", Font.BOLD, 15));
        start.setText("Start");
        
        stop = new JButton();
        stop.setBounds(25,120,120,25);
        stop.setBackground(new Color(00113377));
        stop.setFont(new Font("Dialog", Font.BOLD, 15));
        stop.setText("Stop"); 
        stop.setVisible(false);
        
        noodstop = new JButton();
        noodstop.setBounds(25,425,120,25);
        noodstop.setBackground(Color.red);
        noodstop.setFont(new Font("Dialog", Font.BOLD, 15));
        noodstop.setText("Noodstop");

        terug_Logs = new JButton("Terug");
        terug_Logs.setBounds(500,510,100,20);
        terug_Logs.setBackground(new Color(00113377));
        terug_Logs.setFont(new Font("Dialog", Font.BOLD, 14));
        pane6.add(terug_Logs);
         
        afsluiten_Logs = new JButton("Afsluiten");
        afsluiten_Logs.setBounds(650,510,100,20);
        afsluiten_Logs.setBackground(new Color(00113377));
        afsluiten_Logs.setFont(new Font("Dialog", Font.BOLD, 14));
        pane6.add(afsluiten_Logs);
        
        status = new JButton("Status");
        status.setBounds(25,340,150,25);
        status.setBackground(new Color(00113377));
        status.setFont(new Font("Dialog", Font.BOLD, 14));
        pane6.add(status);
     ////////////////////////////////////////////////   
      streep = new JLabel("____________________________");
      streep.setBounds(25,100,200,15);
      
      streep2 = new JLabel ("____________________________");
      streep2.setBounds(25,320,200,15);
      
      streep4 = new JLabel ("____________________________");
      streep4.setBounds(25,185,200,15);
            
      streep3 = new JLabel("_________________");
      streep3.setBounds(25,415,200,15);
      
      checkb = new Checkbox();
      checkb.setBounds(25,210,15,15);
      checkb.setState(false);
      pane6.add(checkb);
      

      

      ////////////////////////////////////////////////
      startStop = new JLabel("Start/Stop:");
      startStop.setBounds(25,80,250,25);
      startStop.setFont(new Font("Dialog", Font.BOLD, 15));
      
      startTijd = new JLabel("Start tijd:");
      startTijd.setBounds(100,210,250,25);
      startTijd.setFont(new Font("Dialog", Font.BOLD, 15));
      
      stopTijd = new JLabel("Stop tijd:");
      stopTijd.setBounds(100,250,250,25);
      stopTijd.setFont(new Font("Dialog", Font.BOLD, 15));
      
      instel = new JLabel("Machine op tijd instellen");
      instel.setBounds(25,165,250,25);
      instel.setFont(new Font("Dialog", Font.BOLD, 15));
           
      statuslbl = new JLabel("Status opvragen:");
      statuslbl.setBounds(25,300,250,25);
      statuslbl.setFont(new Font("Dialog", Font.BOLD, 15));
        
      resultaatveld = new JTextField();
      resultaatveld.setBounds(25,380,350,25);
      resultaatveld.setBackground(new Color(16777215));
      // Aangeven dat het resultaatveld niet mag worden ingevuld.
      resultaatveld.setEditable(false);


        //Adds the components to the frame.    
        pane6.add(start);
        pane6.add(stop);
        pane6.add(instel);


        pane6.add(noodstop);
        pane6.add(streep);
        pane6.add(streep2);
        pane6.add(streep3);
        pane6.add(streep4);
        pane6.add(startStop);
        pane6.add(statuslbl);
        pane6.add(status);
        pane6.add(startTijd);
        pane6.add(stopTijd);
        //pane6.add(combobox);
        //pane6.add(combobox2);
        pane6.add(resultaatveld);
        
        slgbFrame_Logs.setVisible(false);
        slgbFrame_Logs.setResizable(false);

GUI gedeelte (bovenaan natuurlijk de velden gedeclareerd).
Action listeners
Code:
       //////////////////////////////////////////
        //actionlisterns come here

          
        noodstop.addActionListener (new ActionListener() 
        { public void actionPerformed (ActionEvent event)
          /* actie: stopt de slagboom waar hij mee bezig is.
          *        
          */
          {
            SlgbCore.emergency();
            resultaatveld.setText("Noodstop Uitgevoerd");
          }     
        });
        
        
     
        
        start.addActionListener (new ActionListener() 
        { public void actionPerformed (ActionEvent event)
          {

              {
                  if(checkb.getState() == true)
                  {
                    getStatus();
                    slgbFrame_Logs.repaint();
                    if(startStopCheck == true)
                    {
                      resultaatveld.setText("De machine staat al aan");
                    }
                    else if(combobox5.getSelectedItem() == combobox3.getSelectedItem() && combobox2.getSelectedItem() == combobox4.getSelectedItem())
                    {
                        resultaatveld.setText("De start -en stoptijd mogen niet hetzelfde zijn");
                    }
                    else if (combobox5.getSelectedIndex() > combobox3.getSelectedIndex())
                    {
                        resultaatveld.setText("De start tijd mag niet later zijn dan de stop tijd");
                    }
                    
                    else
                    {
                        resultaatveld.setText("De machine is ingeschakeld van " + combobox5.getSelectedItem() + "." + combobox2.getSelectedItem() + " tot " + combobox3.getSelectedItem() + "." + combobox4.getSelectedItem() + " uur");
                        start.setVisible(false);
                        stop.setVisible(true);
                        startStopCheck = true;   
                    }
                }

                  else if(startStopCheck == false)
                  {
                      resultaatveld.setText("De machine wordt aangezet");
                      start.setVisible(false);
                      stop.setVisible(true);
                      startStopCheck = true;
                  }
                  else
                  {
                      resultaatveld.setText("De Machine staat al aan");
                  }
                
            }
        } 

        });
        
        stop.addActionListener (new ActionListener() 
        { public void actionPerformed (ActionEvent event)
          {
            
                    slgbFrame_Logs.repaint();
            if(startStopCheck == true)
            {
            resultaatveld.setText("De machine is gestopt");
            start.setVisible(true);
            stop.setVisible(false);
            startStopCheck = false;
        }
        else
        {
           resultaatveld.setText("De machine is al gestopt");
        }
          }     
        });
        
               
         terug_Logs.addActionListener (new ActionListener() //
         { public void actionPerformed (ActionEvent event)
           {
             fldPassword_login.setText("");
             fldUser_login.setText("");
             
               slgbFrame_keuze.setVisible(true);
               slgbFrame_keuze.setResizable(false); 
               
               slgbFrame_Logs.setVisible(false);
               slgbFrame_Logs.setResizable(false);     
   
           
           }     
         });
         
         
         afsluiten_Logs.addActionListener (new ActionListener() //
          { public void actionPerformed (ActionEvent event)
            {
               AlwaysRun.quit=true ;
            }     
          });
        
  

        //Makes the frame come visible to the user to interact with.
        slgbFrame_login.setVisible(true);
        slgbFrame_login.setResizable(false);
        
        slgbFrame_keuze.setVisible(false);
        slgbFrame_keuze.setResizable(false);
        
        slgbFrame_slag.setVisible(false);
        slgbFrame_slag.setResizable(false);
        
        slgbFrame_persoon.setVisible(false);
        slgbFrame_persoon.setResizable(false);
     
         
         }
 
  1. Check JCheckbox eens de swing versie van Checkbox http://java.sun.com/javase/6/docs/api/javax/swing/JCheckBox.html
  2. Een Checkbox heeft een ItemListener nodig geen ActionListener http://java.sun.com/javase/6/docs/api/java/awt/event/ItemListener.html
  3. PHP:
          checkb = new Checkbox();
          checkb.setBounds(25,210,15,15);
          checkb.setState(false);
          checkb.addItemListener( ITEM_LISTENER ); // Niet vergeten event handler en object te koppelen
          pane6.add(checkb);

normaal zou het zo moeten werken. Een tip kijk altijd of je event wel wordt opgevangen door iets uit te printen in de event handler. Dat is een vaak voorkomende fout:D
 
bij JCheckbox krijg ik telkens de foutmelding dat hij de klasse JCheckbox niet kan vinden :x

enig idee?
 
bij JCheckbox krijg ik telkens de foutmelding dat hij de klasse JCheckbox niet kan vinden :x

enig idee?

PHP:
import javax.swing.JCheckBox;

Heb je dit? Je hoeft JCheckbox niet te gebruiken hoor. Deze is enkel nieuwer dan de Checkbox klasse. Ik ben zelf niet zo'n voorstander van de Swing klassens maar Swing is nog altijd beter dan awt dacht ik :D. Btw niet vergeten van een itemlistener te add! Zeer belangrijk:)
 
nog steeds de foutmelding dat het de klasse JCheckbox niet kan vinden :confused:
 
Zoals ik al eerder vroeg, geef je _complete_ code eens, en niet delen.
Dan kunnen we beter zien wat er aan de hand is :)
 
code in de bijlage
er zit erg veel nutteloze code in.. dit komt omdat ik een vorig project aan het aanpassen ben en het overbodige nog moet weghalen
 

Bijlagen

Laatst bewerkt:
Het is dan aan te raden om al het overbodige eerst weg te halen voordat je verdergaat.
 
code in de bijlage
er zit erg veel nutteloze code in.. dit komt omdat ik een vorig project aan het aanpassen ben en het overbodige nog moet weghalen

Ik raad je aan om volledig opnieuw te beginnen. Er zit niet alleen nutteloze code in, maar ook referenties naar niet geinstantieerde objecten enzo. Je kan m.b.v. de compiler naar elke mogelijke fout zoeken en deze proberen te corrigeren. Maar het is beter een nieuw project te maken en enkel hetgeen je nodig hebt de copy/paste.

Die fout van Checkbox was trouwens simpel op te lossen in je code stond:
PHP:
Check check
dit moet worden:
PHP:
JCheckbox check; // eerste mogelijkheid
Checkbox check; // 2de

Dat haalt die compilatie fout er al uit, maar er zitten er nog een hoop in. Ik zou nog eens rap door uw cursus java bladeren als ik u was....
 
check check is de fout niet, deze check dient ergens anders voor (login check)
ik zal de code eens goed maken, zodat alle nutteloze code er uit is (de reden dat ik de gehele code niet wou posten is om dit soort reacties te voorkomen)

ik zal hem nog updaten
 
Het is niet alleen handig voor ons om te kijken waar de fout zit, maar is ook makkelijker voor jou om te coden als er niet allemaal nutteloze dingen in zitten en daarnaast zal je programma er trager van worden als er niet gebruikte variabelen worden aangemaakt.
 
klopt.. ik zal de code daarom ook aanpassen... voor mij en voor jullie makkelijker..
aangezien ik dit weekend weg was heb ik er niets aan kunnen doen.. komt begin deze week wel een code tevoorschijn
 
bedankt manne... het probleem is opgelost.
ik heb nog eens goed gekeken naar de voorbeeldcode van killermenace. ik ben daar toch uiteindelijk uit gekomen.

thx voor de hulp!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan