Setar "null" no combobox

11 respostas
evertonsilvagomesjav

Tenho 2º comboBox.

No 1º tenho tres items que sao “2009” “2010” “2011”. Quando eu clico em 2009 como eu faço pra setar null no segundo comboBox?

Posso usar getSelectedItem(), pra fazer ou tem outro meio?

11 Respostas

Vinny

Como assim setar null?
seria não exibilo mais?
apagar o texto que tem nele?
não deixar o usuário mudar o valor dele?

O getSelectedItem() pode usar sim vai lhe retornar um objeto.

Só não entendi a sua primeira pergunta!

evertonsilvagomesjav

Vini é apagar os textos que tem no 2º comboBox quando eu clicar em um item do 1º comboBox.

Scoobydoo

ComboBox.setSelectedItem("");
Tenta assim

evertonsilvagomesjav

Scoby olha como esta o cod:

ComboBoxModel jComboBoxMesModel = new DefaultComboBoxModel(new Controller().verificaMes(this.jComboBoxAno.getSelectedItem().toString()).toArray());

nesse comboMes eu queria q ele upasse de acordo com a seleçao do comboAno, porem agora nao esta upando nda.

Scoobydoo

Ta perfect teu Model - agora sete teu model no ComboBoxMEs

ComboBoxMES.setModel(jComboBoxMesModel );
evertonsilvagomesjav

esta setado:

ComboBoxModel jComboBoxMesModel = new DefaultComboBoxModel(new Controller().verificaMes(this.jComboBoxAno.getSelectedItem().toString()).toArray()); jComboBoxMes = new JComboBox(); jComboBoxMes.setModel(jComboBoxMesModel);

Scoobydoo

E mesmo assim não aparece ???
AH…
Ja sei o problema
Note

new Controller().verificaMes(this.jComboBoxAno.getSelectedItem().toString()).toArray()); // Aqui você está criando um NEW CONTROLLER()

Ou seja… esse jComboBoxAno vai estar como nulo…
Voce precisa criar uma variavel Controller() global e setar ele como um parametro antes de executar isso
Entendeu ??

evertonsilvagomesjav

Scobyy eu instancio Controller porem eu passo um método de controller... deixa eu explicar melhor..

No 1º comboBox que é o comboBoxAno eu leio um diretorio e trago pro comboBox todos nomes de pastas que são 2009-2010-2011. Dentro de cada pasta tem planilhas cujo os nomes são de meses "Jan" "Fev" e por ai vai.

To querendo fazer o seguinte, quando eu clicar no 2009 ele setar pra mim no comboMes todas planilhas que tem nessa pasta 2009, e em 2010 mesma coisa e 2011 tb.

Vou postar a class Controller.

package mascarenhas.relatorio.telefonia;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Controller {

	List<Usuarios> list = new ArrayList<Usuarios>();		
	
	static int mes = 0; // define qual Planilha sera lida no "Excel"
	
	
	HSSFWorkbook wb; // wb objeto que cria um grupo de trabalho com a planilha da Vivo.
	HSSFSheet sheet; // objeto que busca a planilha JAN_ADM
	HSSFRow row; // objeto que buca a linha.
	HSSFCell celUser; // objeto que busca as celulas.
	HSSFCell celTel; // objeto que busca as celulas de telefones.
	HSSFCell celCC; // objeto que busca celulas do centro de custo
	HSSFCell celValorConta; // objeto que busca celulas do Valor da Conta sem Plano Flex.
	HSSFCell celValorTotal; // objeto que busca celulas com o Valor total e plano Flex.
	HSSFCell celContador; // verifica o fim das celulas que contem valores.
	FileInputStream fis; // objeto que traz a planilha através de um canal.
	
	String path = "//10.0.16.2/TecInfor/Monitoramento/TelRat/Vivo/";
	
	void lerExcel() throws IOException, FileNotFoundException{
		
		Usuarios user;
		
		String usuario = "";
		
		double tel = 0.0;
		double valorConta = 0.0;
		double valorTotal = 0.0;
		double centroCusto = 0;
		
		int i = 2;
		int contador = 0;
				
		this.fis = new FileInputStream(path); // aqui fis recebe a planilha da vivo.
		
		this.wb = new HSSFWorkbook(fis); // aqui e criado o grupo de trabalho do POI com a planilha da vivo.
		
		  
			this.sheet = this.wb.getSheetAt(mes - 1); // é passado para sheet a planilha 2 JAN_ADM        
 
        do{
        	
          this.row = this.sheet.getRow(i); // é passado para row a linha (i) se inicia da 3
        	
          this.celUser = this.row.getCell(2); // é passado para cel a celula 3 da linha i
          
          this.celTel = this.row.getCell(1); // é passado para celTel a celula 2 da linha i
          
          this.celCC = this.row.getCell(3); // é passado para celCC a celula 4 da linha i
          
          this.celValorConta = this.row.getCell(4); // é passado para celValorConta a celula 5 da linha i
          
          this.celValorTotal = this.row.getCell(7); // é passado para celValorTotal a celula 8 da linha i
          
          this.celContador = this.row.getCell(0);
          
         try{
                  	  
        	  contador  = (int) celContador.getNumericCellValue();
            
        	  
          }catch(NullPointerException e){
        	  
        	  break;
        	  
          }
        	  
        try{
         
        	usuario = this.celUser.getStringCellValue(); // variável usuario (String) recebe o valor da celula celUser
        	
        	tel = this.celTel.getNumericCellValue(); // variavel tel recebe o valor numeric da celula celTel.
        	
        	valorConta = this.celValorConta.getNumericCellValue(); // variavel valorConta recebe o valor numeric
        	// da celula celValorConta.
        	
        	valorTotal = this.celValorTotal.getNumericCellValue(); // variavel valorTotal recebe o conteudo da celula
        	// celValorTotal
        	
        	centroCusto = this.celCC.getNumericCellValue(); // variavel centroCusto recebe o conteudo numerico da celula
        	// celCC
        	
        	user = new Usuarios();
        	
        	user.setNome(usuario);
        	
        	user.setTelefone((long)tel); 
        	
        	user.setValorConta((float)valorConta);
        	
        	user.setValorTotal((float)valorTotal);
        	
        	user.setCentroCusto((int)centroCusto);
        	
        	this.list.add(user);
        	
        	i++;   
                  
        }catch(NullPointerException e){
        
        }
      
        }while(contador != -1); // fim do while
        
        for(Usuarios u : this.list){
        	
        	System.out.println("Usuário: " +u.getNome() +"\n" 
        			          +"Telefone: " +u.getTelefone() +"\n" 
        					  +"Valor da Conta: " +u.getValorConta() +"\n" 
        					  +"Valor Total: " +u.getValorTotal() +"\n"
        					  +"Centro de Custo: " +u.getCentroCusto() +"\n\n\n");
        	
        } // fim do for.
      	
	} // fim do Método ler Excel
	
	public ArrayList<String> verificaMes(String ano) throws FileNotFoundException, IOException{
		
		ArrayList<String> lista = new ArrayList<String>();
		
		try{
		
		this.fis = new FileInputStream(path + ano + "/ADM Acompanhamento Vivo.xls");
		
		this.wb = new HSSFWorkbook(fis);
		
		}catch(FileNotFoundException e){
			
		}
			
		for(int i = 0; i < 12 ; i++){
		
		try{
				
			this.sheet = wb.getSheetAt(i);
			
			Character testeNome = sheet.getSheetName().charAt(sheet.getSheetName().length() -1);
						
			if(testeNome == 'M'){			
			
				lista.add(sheet.getSheetName());
				
			}
			
		}catch(IllegalArgumentException e){
		
			break;
			
		}catch(NullPointerException e){
			
		}
		
		}
		
		return lista;
		
	}
	
	public List<String> leDiretorio() throws FileNotFoundException, IOException{
		
		String path = "//10.0.16.2/TecInfor/Monitoramento/TelRat/Vivo";
		
		File file = new File(path);
		
		String[] diretorios = file.list();
		
		List<String> lista =  Arrays.asList(diretorios);
		
		return lista;
	}
}
evertonsilvagomesjav

Minha duvida esta mais em relaçao ao seguinte, pra clicar em um item de um comboBox e preencher outro nao precisa de nenhum evento? Eu estou upando o combobox dentro do construtor do Model agora como ele vai upar o segundo combo se o Model nao esta em nenhum evento?

Vinny

Para um comboBox fazer isso que vc quer
vc pode usar o Evento ItemStateChanged
e colocar um if para ver qual posição do seu comboBox esta selecionada
ai vc faz o que vc quer
um exemplo da implementação dele abaixo:

JComboBox1.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                JComboBox1ItemStateChanged(evt);
            }
        });


  private void JComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
        if (JComboBox1.getSelectedIndex()==1){
            System.out.println("Hellow World");
        }
    }

Bom ai vc adapta isso do geito que vc precisa

Abraço

evertonsilvagomesjav

Vini brigadao cara!!!

Criado 25 de fevereiro de 2010
Ultima resposta 26 de fev. de 2010
Respostas 11
Participantes 3