// atualiza os dados gerias do automato protected void refresh() { // modelo de combobox para os estados existentes DefaultComboBoxModel<Estado> modelcb = new DefaultComboBoxModel<>(); // modelo para a tabela de estados Object[][] o = new Object[a.getEstados().size()][2]; int i = 0; // variavel para indicar a posi__o da linha na matriz for (Estado e : a.getEstados()) { modelcb.addElement(e); // se for incinicial aparece ->, se for final aparece (F), se for ambos, (F)-> o[i][0] = (e.isFinal() ? "(f)" : "") + "" + (e.equals(a.getInicial()) ? "->" : ""); o[i][1] = e.getNome(); i++; } cbEstadosDestinos.setModel(modelcb); tblEstados.setModel(new DefaultTableModel(o, new String[] {"", ""})); // modelo para combox de simbolos do alfabeto DefaultComboBoxModel modelsim = new DefaultComboBoxModel(); modelsim.addElement('E'); for (char c : a.getAlfabeto()) { modelsim.addElement(c); } cbAlfabeto.setModel(modelsim); // atualiza o modelo texto do automato textArea.setText(a.toString()); // atualiza o modelo gr_fico do automato painelView.repaint(); }
public void selecionaEstadoAtual(Estado e) { if (e == null) { return; // n_o executa se o novo estado for nulo } atual = e; // atualiza o estado atual lblNewLabel.setText("Detalhes de : " + atual.getNome()); // atualiza o seu nome cbisFinal.setSelected(atual.isFinal()); // atualiza se _ inicial refreshTrans(); }
// chamado no evento do bot_o novo private void novoEstado() { Estado novo = new Estado(isfinal.isSelected(), ("q" + a.getEstados().size())); a.getEstados().add(novo); if (criarInicial) { // seta como inicial se for inicial a.setInicial(novo.getNome()); criarInicial = false; // n_o deixa mais criar estados iniciais } JPanelEstado p = new JPanelEstado(novo, this); // cria a visualiza__o gr_fica // colocam o visualizador no painel painelView.add(p); painelView.repaint(); refresh(); }
private void removerTransicao() { if (atual == null) { return; // n_o executa se o estado atual for nulo } if (tblTrans.getSelectedRow() == -1) { return; // se n_o houve uma sele__o efetiva, n_o executa } // deleta a transi__o atual .getTransicoes() .remove((Character) atual.getTransicoes().keySet().toArray()[tblTrans.getSelectedRow()]); // pega o simbolo-chave do array de chaves conforme o indice da linha selecionada da tabela refreshTrans(); }
private void turnFinal() { if (atual == null) { return; // n_o executa se o estado atual for nulo } atual.setFinal(cbisFinal.isSelected()); // torna final o estado atual refresh(); }
// atualiza os dados das transi__es do estado selecionado protected void refreshTrans() { if (atual == null) { return; // n_o executa se o estado atual for nulo } Object[][] o = new Object[atual.transicoes.size()][2]; int i = 0; for (char c : atual.getTransicoes().keySet()) { o[i][0] = c; o[i][1] = atual.getTransicoes().get(c); i++; } tblTrans.setModel(new DefaultTableModel(o, new String[] {"Simbolo", "Estado(s) Destino(s)"})); // atualiza o modelo texto do automato textArea.setText(a.toString()); // atualiza o modelo gr_fico do automato painelView.repaint(); }
private void excluirEstado() { if (a.getInicial().equals(atual)) { return; // n_o deixa excluir se for inicial } a.deletarEstado(atual.getNome()); // deleta estado atual refreshEstados(); refresh(); refreshTrans(); }
private void novaTransicao() { if (atual == null) { return; // n_o executa se o estado atual for nulo } Character c = (Character) cbAlfabeto.getSelectedItem(); // pega o simbolo a ser usado String estadoDestino = ((Estado) cbEstadosDestinos.getSelectedItem()) .getNome(); // pega o nome do estado a ser usado if (a.newTransicao(atual.getNome(), c + "", estadoDestino)) { // cria a nova transi__o refresh(); refreshTrans(); } }