Acessar método de outra classe

12 respostas
P

olá internautas,

Eu sou nova no java e estou com uma dúvida. Eu tenho dois botões na minha tela, um pesquisar e outro recalcular, cada um com seus métodos. Eu quero o seguinte, quando clicar no método pesquisar chame o método recalcular. Só que este método está em outra classe, alguém por favor poderia me ajudar.

Obrigada,

12 Respostas

Pedrosa

De um new na sua classe:

new OutraClasse().metodoOutraClasse();
P

Pedrosa,

Deu certo ao debugar, ele foi direto para o método só que nesta classe tem um atributo que faz referencia a outra classe: ex:

private ListDadosBean listdados;

public void recalcular() {
	try {
	listdados.setTotalPiorPersist(0.0);

quando eu entro nesta linha dá exception, pq ele reconhece listdados como null. Oq posso fazer prá resolver isso?

Obrigada!

diguix

Você deve instaciar o seu objeto listdados em algum momento da sua aplicação;

public void recalcular() { 
try { 

listadados = new ListDadosBean (); // AQUI

listdados.setTotalPiorPersist(0.0);

Abs

renzonuccitelli

O que vc pode fazer é passar uma referencia do objeto que executa o calculo para o Listener dos dois botoes.

ClasseCalculadora calculadora=new ClasseCalculdora(); Listener listenerBotao1=new Listener(calculadora); Listener listenerBotao2=new Listener(calculadora);

Aí basta vc colocar cada listener no seu respectiovo botao.

P

Na verdade eu faço referencia a ele assim:

private ListDadosBean listdados;

eu não instancio.

[]´s

renzonuccitelli

Poste o seu código que fica mais fácil de te ajudar. Qdo vc diz que cada botao tem um método, o que vc quer dizer? Pq para executar açoes com botoes, em geral, se faz com o ActionListener…

P

Olhe:

o cod está assim:

public void recalcular() {
	try {
		
		// Faturado
		listdados.setTotalPiorPersist(0.0);
		listdados.setTotalProvavelPersist(0.0);
		listdados.setTotalMelhorPersist(0.0);

		for (DashboardFaturadoTO to :[b] listdados.[/b]getDashboardFaturado()) {

No momento em que entra neste for, ele reconhece todos atr e metodos como null e dá exception.

A classe está declarada assim:

private ListDadosBean listdados;

renzonuccitelli

Vc alguma hora inicializou o atributo listDados? Se não, vai dar null poniter excepition msm. Em geral os atributos são inicializados no construtor ou é feito algum tipo de injeção de dependencia…
O ideal seria vc postar todo o código da classe que contém o método, não só o método em si.

Pedrosa

Use o tag code para postar códigos aqui, sua lista vem zerada pois vc esta fazendo isso:

private ListDadosBean listdados

Vc precisa dar um new na sua lista ex:

public static void main(String[] args) {
	List<String> lista = new ArrayList<String>();
	lista.add("teste");
	lista.add("teste2");
	for (String result: lista){
		System.out.println(result);
	}
}
P

O código está assim:

package com.borland.siteos.faces;


public class DashboardFaces {
	private static final long serialVersionUID = 1L;
	private Integer ano;
	public ListQuartersBean listq = new ListQuartersBean();
	private ListDadosBean listdados;
	private DashboardService service;
	private String titulopagina;
	

	public DashboardFaces(DashboardService service) {
		super();
		this.service = service;
	}

	public String initAdd() {
		titulopagina = "Dashboard";
		limpar();
		return "searchDashboard";
	}

	private void limpar() {
		ano = new Integer(0);
		listdados = new ListDadosBean(service);
		this.listq = new ListQuartersBean();
	}


	public void recalcular() {
		try {
			
		 
			// Faturado
			listdados.setTotalPiorPersist(0.0);
			listdados.setTotalProvavelPersist(0.0);
			listdados.setTotalMelhorPersist(0.0);
	
			for (DashboardFaturadoTO to : listdados.getDashboardFaturado()) {
					
				if (to.getPior() != null) {
						listdados.setTotalPiorPersist(listdados.getTotalPiorPersist() + to.getPiorPersist());	
				} 
					
				if (to.getProvavel() != null) {
						listdados.setTotalProvavelPersist(listdados.getTotalProvavelPersist()
								+ to.getProvavelPersist());
				}
				if (to.getMelhor() != null ) {
						listdados.setTotalMelhorPersist(listdados.getTotalMelhorPersist()
								+ to.getMelhorPersist());
				}
			}
			
			//Pendente Escopo Fechado
			listdados.setTotalPendenteEscopoFechadoPior(0.0);
			listdados.setTotalPendenteEscopoFechadoProvavel(0.0);
			listdados.setTotalPendenteEscopoFechadoMelhor(0.0);
			
			double totalPendenteEscopoPiorDolar = 0;
			double totalPendenteEscopoProvavelDolar = 0;
			double totalPendenteEscopoMelhorDolar = 0;
			
			for (DashboardPendenteEscopoFechadoTO to : this.listdados.getDashboardPendenteEscopoFechado()) {
				if (to.getPior() != null) {
					listdados.setTotalPendenteEscopoFechadoPior(listdados.getTotalPendenteEscopoFechadoPior()
							+ to.getPior());
					
					totalPendenteEscopoPiorDolar += to.getDolar() != 0 ? to
							.getPior()
							/ to.getDolar()
							: 0;
				} 
				if (to.getProvavel() != null) {
					listdados.setTotalPendenteEscopoFechadoProvavel(listdados.getTotalPendenteEscopoFechadoProvavel()
							+ to.getProvavel());
					
					totalPendenteEscopoProvavelDolar += to.getDolar() != 0 ? to.getProvavel()
							/ to.getDolar()
							: 0;
				}
				if (to.getMelhor() != null) {
					listdados.setTotalPendenteEscopoFechadoMelhor(listdados.getTotalPendenteEscopoFechadoMelhor()
						   + to.getMelhor());
					
					totalPendenteEscopoMelhorDolar += to.getDolar() != 0 ? to.getMelhor()
							/ to.getDolar()
							: 0;
				}
			}
			// Pendente Hora Homem	
			listdados.setTotalPendentePior(0.0);
			listdados.setTotalPendenteProvavel(0.0);
			listdados.setTotalPendenteMelhor(0.0);
			double totalPendentePiorDolar = 0;
			double totalPendenteProvavelDolar = 0;
			double totalPendenteMelhorDolar = 0;
			for (DashboardPendenteAgendadoTO toPendente : this.listdados
					.getDashboardPendente()) {
				if (toPendente.getPior() != null) {
					listdados.setTotalPendentePior(listdados
							.getTotalPendentePior()
							+ toPendente.getPior());
					totalPendentePiorDolar += toPendente.getDolar() != 0 ? toPendente
							.getPior()
							/ toPendente.getDolar()
							: 0;
				}
				if (toPendente.getProvavel() != null) {
					listdados.setTotalPendenteProvavel(listdados
							.getTotalPendenteProvavel()
							+ toPendente.getProvavel());
					totalPendenteProvavelDolar += toPendente.getDolar() != 0 ? toPendente
							.getProvavel()
							/ toPendente.getDolar()
							: 0;
				}
				if (toPendente.getMelhor() != null) {
					listdados.setTotalPendenteMelhor(listdados
							.getTotalPendenteMelhor()
							+ toPendente.getMelhor());
					totalPendenteMelhorDolar += toPendente.getDolar() != 0 ? toPendente
							.getMelhor()
							/ toPendente.getDolar()
							: 0;
				}
			}

			// Agendado
			listdados.setTotalAgendadoPior(0.0);
			listdados.setTotalAgendadoProvavel(0.0);
			listdados.setTotalAgendadoMelhor(0.0);
			double totalAgendadoPiorDolar = 0;
			double totalAgendadoProvavelDolar = 0;
			double totalAgendadoMelhorDolar = 0;
			for (DashboardPendenteAgendadoTO toAgendado : this.listdados
					.getDashboardAgendado()) {
				if (toAgendado.getPior() != null) {
					listdados.setTotalAgendadoPior(listdados
							.getTotalAgendadoPior()
							+ toAgendado.getPior());
					totalAgendadoPiorDolar += toAgendado.getDolar() != 0 ? toAgendado
							.getPior()
							/ toAgendado.getDolar()
							: 0;
				}
				if (toAgendado.getProvavel() != null) {
					listdados.setTotalAgendadoProvavel(listdados
							.getTotalAgendadoProvavel()
							+ toAgendado.getProvavel());
					totalAgendadoProvavelDolar += toAgendado.getDolar() != 0 ? toAgendado
							.getProvavel()
							/ toAgendado.getDolar()
							: 0;
				}
				if (toAgendado.getMelhor() != null) {
					listdados.setTotalAgendadoMelhor(listdados
							.getTotalAgendadoMelhor()
							+ toAgendado.getMelhor());
					totalAgendadoMelhorDolar += toAgendado.getDolar() != 0 ? toAgendado
							.getMelhor()
							/ toAgendado.getDolar()
							: 0;
				}
			}

			// Forecast
			for (DashboardForecastTO toForecast : this.listdados
					.getDashboardForecast()) {

				TipoPlanEnum statusEnum = TipoPlanEnum.getEnum(toForecast
						.getDescricao());

				if (statusEnum.descricao.equals("Pior")) {
					toForecast.setValorTotal(0.0);
					toForecast.setValorTotal(listdados.getTotalPiorPersist() + totalPendenteEscopoPiorDolar
							+ totalPendentePiorDolar + totalAgendadoPiorDolar);
					toForecast
							.setPercentual(toForecast.getValor() != 0 ? toForecast
									.getValorTotal()
									/ toForecast.getValor()
									: 0);
				} else if (statusEnum.descricao.equals("Provável")) {
					toForecast.setValorTotal(0.0);
					toForecast.setValorTotal(listdados.getTotalProvavelPersist() + totalPendenteEscopoProvavelDolar
							+ totalPendenteProvavelDolar
							+ totalAgendadoProvavelDolar);
					toForecast
							.setPercentual(toForecast.getValor() != 0 ? toForecast
									.getValorTotal()
									/ toForecast.getValor()
									: 0);
				} else if (statusEnum.descricao.equals("Melhor")) {
					toForecast.setValorTotal(0.0);
					toForecast.setValorTotal(listdados.getTotalMelhorPersist() + totalPendenteEscopoMelhorDolar
							+ totalPendenteMelhorDolar
							+ totalAgendadoMelhorDolar);
					toForecast
							.setPercentual(toForecast.getValor() != 0 ? toForecast
									.getValorTotal()
									/ toForecast.getValor()
									: 0);
				}
			}
		} catch (Exception e) {
			throw new RuntimeException("Erro", e);
		}
	}

	public void pesquisar() throws ParseException {
		listdados = new ListDadosBean(service);

		if (listq.getQuarterSelecionado() == 0 && this.ano.equals(0)) {
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage(Constants.MSG_SEARCH_QUARTER_ANO));
			return;
		} else if (listq.getQuarterSelecionado() == 0) {

			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage(Constants.MSG_SEARCH_QUARTER));
			return;
		} else if (this.ano.equals(0)) {

			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage(Constants.MSG_SEARCH_ANO));
			return;

		} else if (this.ano < 1990
				|| this.ano > GregorianCalendar.getInstance()
						.get(Calendar.YEAR)) {

			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage(Constants.MSG_SEARCH_YEAR));
			return;
		}

		[b]this.recalcular();[/b]
		
		listdados.pesquisarAllForecast(listq.getQuarterSelecionado(), ano);
		listdados.pesquisarFaturadoByMonthYear(listq.getQuarterSelecionado(),
				ano);
		listdados.pesquisarAllPendente(listq.getQuarterSelecionado(), ano);
		listdados.pesquisarAllPendenteEscopoFechado(listq.getQuarterSelecionado(),
				ano);	
		listdados.pesquisarAllAgendado(listq.getQuarterSelecionado(), ano);
		
		
	}

	public void salvar() throws ParseException{
		service.save(listq.getQuarterSelecionado(), ano, listdados);				
	}	
	
	//getters and setters
}
Pedrosa

Paty crie uma lista com generics do seu objeto:

List<SeuObj> lista = new ArrayList<SeuObj>();

Popule o objeto e adicione na lista:

SeuObj seuObj = new SeuObj();
seuObj.setXpto("valor");
seuObj.setXpto2("valor2");
lista.add(seuObj);

Agora sim vc conseguira percorrer essa lista do objeto:

for (SeuObj result: lista){
   System.out.println(result.getXpto());
   System.out.println(result.getXpto2());
}
renzonuccitelli

Como eu tinha suposto, não vi vc inicializando a listDados no construtor, ou ao menos um método setListDados para vc passar a lista como parametro. Entao o que vc tem que fazer e popular essa lista antes de utiliza-la, ou ao menos dar um new nela

Criado 18 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 12
Participantes 4