Usando switch para manipular eventos de componentes swing

Pois é gente, estou aqui preparando a tela inicial de um sistema que estou migrando de clipper para java. Como nessa tela eu tenho vários componentes entre menus e submenus achei que o mais adequado para manipular os eventos desses componentes seria a estrutura switch pois ela é a mais indicada para seleção múltipla, ou seja, quando há muitas opções a serem escolhidas. Porém percebi que a estrutura switch só trabalha com tipos int ou double, sendo assim como eu poderia fazer para que desse certo o código abaixo usando a estrutura switch.

[code]public void actionPerformed(ActionEvent clickenter) {

     switch(clickenter.getSource()){

	
	case calculadora:
		
	try {
					
		Runtime.getRuntime().exec("cmd.exe /C start calc.exe");
	}
	
	catch(IOException exceio) {
		
		exceio.printStackTrace();
	}
	
	catch(Exception exce) {
		
		
		exce.printStackTrace();
	}
	
		break;
}

}[/code]

Agradeço qualquer ajuda.

Leia este tutorial

http://java.sun.com/docs/books/tutorial/uiswing/index.html

e veja por que é que tratar os eventos comparando o ActionEvent.getSource() não é um bom jeito de se fazer as coisas. Normalmente você cria classes anônimas para tratar os eventos, ou melhor ainda, Actions.

Se a tela inicial do seu sistema terá vários menos e submenus, eu recomendaria não usar o switch, e escreveria código específico no evento ActionPerformed de cada menu da aplicação.

umm, essa idéia também passou pela minha cabeça porém não pintou nem uma luz de como fazer.

Vc poderia me dar uma dica de como fazer isso, um algoritmo ou um pequeno exemplo se possível.

grato!

É isso?

[code] calculadora.addActionListener(execcalc);
//sair.addActionListener(this);

}

private static ActionListener execcalc = new ActionListener() {
public void actionPerformed(ActionEvent clickenter) {

//switch(clickenter.getSource()){

	
//	case calculadora:
		
	try {
					
		Runtime.getRuntime().exec("cmd.exe /C start calc.exe");
	}
	
	catch(IOException exceio) {
		
		exceio.printStackTrace();
	}
	
	catch(Exception exce) {
		
		
		exce.printStackTrace();
	}
//
//		break;
//}
}

};[/code]

criando um objeto ActionListener para cada componente?

axo que agora pra ficar como o thingol sugeriu basta criar uma classe para tratar esses eventos.

Mas como seria? Uma classe chamada digamos eventosgui e nela conteria um objeto Listener para cada componente?

Bem segue abaixo o que eu consegui fazer baseado na opinião dos senhores.

Bem meu método main tá assim.

//Capturando eventos dos componentes calculadora.addActionListener(EventosGUI.execcalc); sair.addActionListener(EventosGUI.sair);

E abaixo segue a minha classe EventosGUI

[code]import java.io.; //Importa o pacote de entrada e saída de dados.
import java.awt.event.
; //Importa o pacote de eventos dos componentes GUI.

class EventosGUI {

public static ActionListener execcalc = new ActionListener() {
public void actionPerformed(ActionEvent clickenter) {

    try {
		Runtime.getRuntime().exec("cmd.exe /C start calc.exe");
	}
	catch(IOException exceio) {
    	exceio.printStackTrace();
	}
	catch(Exception exce) {
		exce.printStackTrace();
	}
}

};

public static ActionListener sair = new ActionListener() {
public void actionPerformed(ActionEvent clickenter) {

    System.exit(0);
}

};
}[/code]

Era isso que os senhores tinham em mente?

caso contrario postem um exemplo ai.

Sim, o caminho é esse. Os links abaixo podem ajudar a fixar melhor o conceito:

http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html
http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html

Ok então, valeu pelas dicas.