Alteração de ComboBox em tempo de execução

2 respostas
R

opa, eae galera…

To fazendo um projeto aqui pra faculdade e estava querendo fazer uma validação de datas dessa forma:

Quando o usuário selecionar o mês na JComboBox de meses apareceria na JComboBox de dias os dias correspondentes à primeira escolha.

Exemplo: O usuário selecionou “01” na comboMes ai deveria aparecer os dias correspondentes a janeiro.

Alguém pode me ajudar?

Vlws

2 Respostas

M

É só você colocar um Listener no combo no evento itemStateChanged assim quando mudar o item carrega o combo de dias conforme o mês selecionado.

Ironlynx
RodrigoLuz, tem vários exemplos de como fazer isso aqui mesmo no fórum.Aí vai um:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
 
public class MyComboTest extends JFrame{
	
	String [] genderItem={"Female","Male"};
    JComboBox genderCombo=new JComboBox(genderItem);
    String [] smokeItem={"Never","Rare","Frequently","All day"};
    JComboBox smokeCombo=new JComboBox(smokeItem);
    String [] drinkItem={"Never","Rare","Frequently","Heavily"};
    JComboBox drinkCombo=new JComboBox(drinkItem);
    
    String [] statusItem={"Select the option:","Moderate","Normal","Insane"};
    JComboBox statusCombo=new JComboBox(statusItem);
    JTextField category=new JTextField();
    
    JTextField resultField;
	
	//instance variables
	String gender="Female";
	int smoke=0, drink=0;
	
	 public MyComboTest(){
        super("Testing your health");
               
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().add(createPane());
        pack();
    }
    
     private JPanel createPane(){
        JPanel jp = new JPanel(new GridLayout(0, 2, 5, 5));
        jp.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        
        category.setEditable(false);        
        
        jp.add(new JLabel("Your gender:"));
        jp.add(genderCombo);
        jp.add(new JLabel("Smoke:"));
        jp.add(smokeCombo);
        jp.add(new JLabel("Drink:"));
        jp.add(drinkCombo);
        jp.add(new JLabel("Your way of life:"));
        jp.add(statusCombo);
        jp.add(new JLabel());
        jp.add(new JLabel());
        jp.add(new JLabel());
        jp.add(new JLabel());
        jp.add(new JLabel("Results"));
        jp.add(category);
        
        genderCombo.setSelectedIndex(0);
         genderCombo.addActionListener(new ComboListener());
 			
 		 smokeCombo.setSelectedIndex(0);
         smokeCombo.addActionListener(new ComboListener());
 		
 		drinkCombo.setSelectedIndex(0);
         drinkCombo.addActionListener(new ComboListener()); 		  
 		
 		statusCombo.setSelectedIndex(0);     	          	
    	 statusCombo.addActionListener(new ComboListener());       	   		
 		
       
        return jp;
    }//end creatPane()
    
    private class ComboListener implements ActionListener{    
        public void actionPerformed(ActionEvent ae){
           int gender=genderCombo.getSelectedIndex();
           int s=smokeCombo.getSelectedIndex();
           int d=drinkCombo.getSelectedIndex();
           int stCombo=statusCombo.getSelectedIndex();
           String categoryRisk=returnHealthStatus(getDrinkStatus(),getSmokeStatus());
                      
             if(gender==0){
               setGender("Female");
             }else{
               setGender("Male");
             }
             
                if(s==0){                 	
                    if(getGender().equals("Female"))
                    	setSmokeStatus(0);
                    else if(getGender().equals("Male"))
                    	setSmokeStatus(0);
                 }else if(s==1){                 	
                    if(getGender().equals("Female"))
                    	setSmokeStatus(2);
                    else if(getGender().equals("Male"))
                    	setSmokeStatus(2);
                 }else if(s==2){
                    if(getGender().equals("Female"))
                    	setSmokeStatus(5);
                    else if(getGender().equals("Male"))
                    	setSmokeStatus(4);
                 }else if(s==3){
                    if(getGender().equals("Female"))
                        setSmokeStatus(7);
                    else if(getGender().equals("Male"))
                    	setSmokeStatus(7);
                 }
                 
                if(d==0){                 	
                    if(getGender().equals("Female"))
                    	setDrinkStatus(0);
                    else if(getGender().equals("Male"))
                    	setDrinkStatus(1);//mens lie too much!
                 }else if(d==1){                 	
                    if(getGender().equals("Female"))
                    	setDrinkStatus(2);
                    else if(getGender().equals("Male"))
                    	setDrinkStatus(2);
                 }else if(d==2){
                    if(getGender().equals("Female"))
                    	setDrinkStatus(6);
                    else if(getGender().equals("Male"))
                    	setDrinkStatus(7);
                 }else if(d==3){
                    if(getGender().equals("Female"))
                        setDrinkStatus(9);
                    else if(getGender().equals("Male"))
                    	setDrinkStatus(9);
                 }    
                 	
                
                 if(stCombo==0){
                   category.setText("None");
                 }else if(stCombo==1){
                   if(categoryRisk.equals("B"))
                      category.setText("You have a normal health");
                   else if(categoryRisk.equals("C"))
                      category.setText("You have a wonderful health");                  
                   else 
                      category.setText("Some risks to your health...");
                 }else if(stCombo==2){
                     if(categoryRisk.equals("B"))
                        category.setText("Some risks to your health!");
                     else if(categoryRisk.equals("C"))
                        category.setText("Normal health");                    
                     else 
                        category.setText("Bad,Bad, lifestyle!");
                }else if(stCombo==3){
                     if(categoryRisk.equals("B"))
                        category.setText("Almost dead!");
                     else if(categoryRisk.equals("C"))
                        category.setText("Bad,Bad, lifestyle!");                    
                     else 
                        category.setText("Are you alive?");
                }         
          
        }//end actionPerformed method
    }//end ComboListener
 
    
    public String returnHealthStatus(int smoke,int drink){
      int healthRisk=smoke+drink; 
      	System.out.println("Health Risk:"+healthRisk);      
          if(healthRisk<=6)
                  return "C";
          else if(healthRisk>6&&healthRisk<=12)
                  return "B";         
          else
                 return "A";    
  }
  
  public void setGender(String flag){
    	this.gender=flag;
  }
    
  public String getGender(){
    	return gender;
  }
  
  public void setDrinkStatus(int flag){
    	this.drink=flag;
  }
    
  public int getDrinkStatus(){
    	return drink;
  }
  
  public void setSmokeStatus(int flag){
    	this.smoke=flag;
  }
    
  public int getSmokeStatus(){
    	return smoke;
  }
  
  private static void createAndShowGUI(){
        MyComboTest swingApp = new MyComboTest();
        swingApp.setVisible(true);
  }
 
  public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            public void run()
            {
                createAndShowGUI();
            }
        });
 
    }  
  
}
Criado 31 de maio de 2009
Ultima resposta 31 de mai. de 2009
Respostas 2
Participantes 3