Olá amigos!
Sou novo no mundo java e ainda mais no fórum.
Estou fazendo uma programinha para buscar as características de algum medicamento de uma classe específica.
Por favor, não reparem em algumas coisas desnecessárias que estão em meu código. Muitas delas são utilizadas pq a diciplina para a qual estou fazendo este código(é um trabalho de faculdade) me exigem.
Bom é justamente por causa de uma destas exigencias que estou aqui. Preciso, em alguma parte do meu código, explorar a utilização de diversas classes, chama-las, e etc.
Vou tentar me fazer o mais claro possível para explicar o meu problema, mas vejo que talves não vá ser fácil me entender. Vamos lá:
Existe uma classe principal que executa o programa todo (chamo de Execução). Esta classe(Execução) chama outra classe (chamada de ClassesMed), que cria uma JList com a lista das classes de medicamentos a serem escolhidas pelo usuário. Quando o usuário seleciona uma des classes de medicamentos, uma outra classe é executada (pode ser a classe Antibióticos, Antinflamatórios, ou outras, depende do que o usuário escolher) e coloca em outra JList, uma lista dos medicamentos daquela classe de remédios. Quando o usuário seleciona um remédio, o programa lê um arquivo no qual estão as características do remédio escolhido e imprime em uma janela JOptionPane.
Na classe ClassesMed, preciso colocar tantos “if’s” quantas são as classes de medicamentos, para poder chamar a classe que contem os medicamentos da calsse de medicamentos ecolhida (confuso?!).
Gostaria no entanto, a fim de tornar o programa menos extenso e fazer com que cada classe de medicamentos incluída não precise criar outro “if”, de fazer com que o nome da classe a ser chamada fosse uma variável. Assim, declararia uma String chamada “classe”, por exemplo, e atribuiria à ela o valor equivalente à “classesName[classesJList.getSelectedIndex()]”, onde “classesJList.getSelectedIndex()” me retornaria dentro do vetor classesName o índice do ítem selecionado. Vendo o código abaixo, vcs vão perceber que se o usuário clicasse em “Antibióticos”, por exemplo, o nome da classe chamada seria efetivamente “Antibióticos”, e assim só me restava criar a classe antibióticos para que esta fosse chamada.
No entanto, quando fiz isso não deu certo, pq? Estou considerando alguma coisa errada?
Desde já agradeço a paciência!
Obrigado!
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.ListSelectionModel;
public class ClassesMed extends JFrame{
private JList classesJList;
private final String classesNames [] = {"Antinflamatórios", "Antibióticos",
"Antialérgicos", "Antidepressivos", "Antiácidos", "Anticonvulsivos", "Diuréticos"};
public ClassesMed(){
super("Escolha de classe");
setLayout(new FlowLayout());
classesJList = new JList(classesNames);
classesJList.setVisibleRowCount(5);
classesJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(new JScrollPane(classesJList));
classesJList.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
JOptionPane.showMessageDialog(null, "Escolha um medicamento da classe " +
classesNames[classesJList.getSelectedIndex()]);
if((classesNames[classesJList.getSelectedIndex()]).equals("Antinflamatórios")){
Antinflamatórios classe = new Antinflamatórios();
classe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classe.setSize(280, 120);
classe.setVisible(true);
classe.setLocation(400, 300);
}
else{
if((classesNames[classesJList.getSelectedIndex()]).equals("Antibióticos")){
Antibióticos classe = new Antibióticos();
classe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classe.setSize(280, 120);
classe.setVisible(true);
classe.setLocation(400, 300);
}
else{
if((classesNames[classesJList.getSelectedIndex()]).equals("Antialérgicos")){
Antialérgicos classe = new Antialérgicos();
classe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classe.setSize(280, 120);
classe.setVisible(true);
classe.setLocation(400, 300);
}
else{
if((classesNames[classesJList.getSelectedIndex()]).equals("Antidepressivos")){
Antidepressivos classe = new Antidepressivos();
classe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classe.setSize(280, 120);
classe.setVisible(true);
classe.setLocation(400, 300);
}
else{
if((classesNames[classesJList.getSelectedIndex()]).equals("Antiácidos")){
Antiácidos classe = new Antiácidos();
classe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classe.setSize(280, 120);
classe.setVisible(true);
classe.setLocation(400, 300);
}
else{
if((classesNames[classesJList.getSelectedIndex()]).equals("Anticonvulsivos")){
Anticonvulsivos classe = new Anticonvulsivos();
classe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classe.setSize(280, 120);
classe.setVisible(true);
classe.setLocation(400, 300);
}
else{
if((classesNames[classesJList.getSelectedIndex()]).equals("Diuréticos")){
Diuréticos classe = new Diuréticos();
classe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
classe.setSize(280, 120);
classe.setVisible(true);
classe.setLocation(400, 300);
}
}
}
}
}
}
}
}
}
);
}
}