Boas amigos,
eu tenho o seguinte programa:
[img]http://alojaimagens.com/images/605m5q2ollhctfnaronh.png[/img]
Ao qual já está quase acabado mas falta por os dois filtros a funcionar(Filtrar por divisao e filtrar por tipo) bem eu já tentei de tudo mas ainda não consegui, o codigo que tenho é muito extenso e não vou postar todo só o mais importante, passo a explicar.
Tenho 3 packages, no primeiro package estao as classes onde se criam os equipamentos, no segundo package estao as classes onde crio os metodos para os equipamentos, exemplo getDivisao, getNome etc, e no terceiro package estao 2 classes, o setup que cria inicia os equipamentos, e a JanelaPrincipal que é onde se faz tudo.
public abstract class DefaultEquipamento implements Equipamento{
public static String TIPO;
public static final String LIGADO = "ligado";
public static final String DESLIGADO = "desligado";
protected String nome; // nome do equipamento
protected boolean ligado = false; // estado do equipamento
protected String observacoes = ""; // observações do equipamento
protected String divisao; // em que divisão está instalado o equipamento
protected JPanel controlo;
public boolean isLigado(){
return ligado;
}
public abstract void setLigado(boolean ligado);
public String getObservacoes() {
return observacoes;
}
public void setObservacoes(String observacoes) {
this.observacoes = observacoes;
}
public String getTipo(){
return TIPO;
}
public String getDivisao() {
return divisao;
}
public void setDivisao(String divisao) {
this.divisao = divisao;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public abstract String[] getCapacidades();
public abstract JPanel getControlo();
}
String []divs = { "Sala", "Cozinha", "Jardim", "Quarto1", "Quarto2", "Quarto3"};
for( String s : divs )
janela.adicionarDivisao( s );
// args[0] = nome
// args[1] = tipo
// args[2] = divisão
// args[3] = observações
// args[4] = estado inicial ("ligado"/"desligado")
// args[5 e seguintes] = capacidades
String [][]equips = { {"câmara da sala", Camara.TIPO, "Sala", "espia a sala", Camara.DESLIGADO },
{"câmara do jardim", Camara.TIPO, "Jardim", "vê o que se passa na rua", Camara.LIGADO, Camara.MOVEL_X, Camara.MOVEL_Y, Camara.ZOOM},
{"lâmpada do jardim", Lampada.TIPO, "Jardim", "Lãmpada do jardim", Camara.LIGADO},
{"lâmpada da cozinha", Lampada.TIPO, "Cozinha", "Lâmpada da cozinha", Camara.LIGADO},
{"lâmpada do quarto grande", Lampada.TIPO, "Quarto1", "Lâmpada do quarto grande", Camara.DESLIGADO, Lampada.REGULAVEL },
{"lâmpada do quarto da rapariga", Lampada.TIPO, "Quarto2", "Lâmpada do quarto da rapariga", Camara.DESLIGADO, Lampada.REGULAVEL },
{"lâmpada do quarto do rapaz ", Lampada.TIPO, "Quarto3", "Lâmpada do quarto do rapaz", Camara.DESLIGADO, Lampada.REGULAVEL },
{"ar condicionado da sala", ArCondicionado.TIPO, "Sala" , "Liberta ar e desumidifica a sala", ArCondicionado.LIGADO, ArCondicionado.REGULAVEL},
{"ar condicionado da cozinha", ArCondicionado.TIPO, "Cozinha" , "Liberta ar e desumidifica a cozinha", ArCondicionado.DESLIGADO, ArCondicionado.REGULAVEL},
{"ar condicionado do quarto grande", ArCondicionado.TIPO, "Quarto1" , "Liberta ar e desumidifica o Quarto1", ArCondicionado.DESLIGADO, ArCondicionado.REGULAVEL},
{"ar condicionado ddo rapaz", ArCondicionado.TIPO, "Quarto2" , "Liberta ar e desumidifica o Quarto2", ArCondicionado.LIGADO, ArCondicionado.REGULAVEL},
{"forno da cozinha",Forno.TIPO,"Cozinha","serve para fazer cozinhados", Forno.DESLIGADO, Forno.REGULAVEL},
{"máquina de roupa da cozinha", MaquinaRoupa.TIPO, "Cozinha", "Lava a Roupa", MaquinaRoupa.DESLIGADO, MaquinaRoupa.ECONOMICO,MaquinaRoupa.ENXAGUAR,
MaquinaRoupa.LAVAR,MaquinaRoupa.SECAR,MaquinaRoupa.MEIACARGA,MaquinaRoupa.TIRARVINCOS,MaquinaRoupa.TORCER},
{"maquina roupa da cave", MaquinaRoupa.TIPO,"Cave","Lava Roupa",MaquinaRoupa.DESLIGADO,MaquinaRoupa.TORCER,MaquinaRoupa.LAVAR, MaquinaRoupa.ENXAGUAR, MaquinaRoupa.MEIACARGA}
};
for( String []equip : equips )
janela.adicionarEquipamento( equip );
}
});
public void adicionarEquipamento( String []args ){
// ver se já há elementos com o mesmo nome
try{
if( nomes.contains( args[0] ) );
}
catch(RuntimeException e){
System.out.println("Nome " + args[0] + " já existe");
}
// ver se a divisão existe, senão dar erro
try{
if( !divisoes.contains(args[2]) );
}
catch ( RuntimeException e ){
System.out.println("Divisão " + args[2] + " não existe");
}
// verificar e criar o equipamento certo
criarEquipamento(args);
// é um equipamento logo criá-lo e processar as capacidades
defEquip.setDivisao( args[2] );
defEquip.setObservacoes( args[3] );
defEquip.setLigado( args[4].equals(DefaultEquipamento.LIGADO) ); // se for "ligado" é ligado senão é desligado
// adicionar aos equipamentos
equipamentos.put( args[0], defEquip );
// adicionar o nome aos equipamentos
equipamentosListModel.addElement( defEquip.getNome() );
//adicionar aos nomes dos equipamentos
nomes.addElement(defEquip.getNome());
// ver se a combobox dos tipos já a tem, senão coloca-a
adicionarTipo();
}
public class Lampada extends DefaultEquipamento {
public static final String TIPO = "Lampada";
// constantes com as capacidades suportadas por este aparelho
// com estas constantes reduz-se as hipóteses de erros por
// manipulação de capacidades
public static final String REGULAVEL = "regulavel";
private boolean regulavel = false; // se é ou não regulável
private int nivel; // nível de luminosidade (0% a 100%)
public Lampada( String nome ){
this.nome = nome;
}
public boolean isLigado() {
return ligado;
}
public void setLigado(boolean ligado) {
this.ligado = ligado;
// quando se liga/desliga isto vai colocar o nível no máximo ou mínimo
nivel = ligado? 100: 0;
// actualizar o controlo
((LampadaControl)getControlo()).setLigado( ligado );
}
public String getObservacoes() {
return observacoes;
}
public void setObservacoes(String observacoes) {
this.observacoes = observacoes;
}
public int getNivel() {
return nivel;
}
public void setNivel(int nivel) {
this.nivel = nivel;
}
public boolean isRegulavel() {
return regulavel;
}
public void setRegulavel(boolean regulavel) {
this.regulavel = regulavel;
}
public String getDivisao() {
return divisao;
}
public void setDivisao(String divisao) {
this.divisao = divisao;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String[] getCapacidades(){
// se for regulável suporta a regulável senão não suporta nada
if( isRegulavel() ){
String []cap = { REGULAVEL };
return cap;
}
return new String[0];
}
public JPanel getControlo(){
// se o controlo ainda não foi criado é preciso criá-lo
if( controlo == null )
controlo = new LampadaControl( this );
return controlo;
}
}
Gostava que me podessem ajudar visto isto ser um trabalho para a faculdade e só me faltar isso para acabar e era importante ir tudo a funcionar.
Cumprimentos