Ajuda com parametro pra outro metodo

1 resposta
R
bom dia galera, tô com um problema aki, com um trabalho de grafos que tenho q entregar... vou postar o código e a duvida depois do código, quem puder ajudar...
public class Grafos {
	
	 private HashMap<Vértice, HashSet<Vértice>> dicionário = new HashMap<>();
     private HashSet<Aresta> arestas = new HashSet<>();

     public HashSet<Vértice> getVizinhos(Vértice vertice) {

             return dicionário.get(vertice);

     }

     public Grafos() {

     }

     public void adicionaVértice(Vértice v) {
             if (!dicionário.containsKey(v)) {
                     dicionário.put(v, new HashSet<Vértice>());
             }
     }

     public void removeVértice(Vértice v) {
             for (Vértice outro : dicionário.get(v)) {
                     dicionário.get(outro).remove(v);
             }
             dicionário.remove(v);
             HashSet<Aresta> buffer = new HashSet<Aresta>();
             for (Aresta a : arestas) {
                     if (a.liga(v)) {
                             buffer.add(a);
                     }
             }
             for (Aresta a : buffer) {
                     arestas.remove(a);
             }
     }

     public void conectaVértices(Vértice v1, Vértice v2) {
             dicionário.get(v1).add(v2);
             dicionário.get(v2).add(v1);
             arestas.add(new Aresta(v1, v2));
     }
     
     public void desconectaVértices(Vértice v1, Vértice v2) {
             dicionário.get(v1).remove(v2);
             dicionário.get(v2).remove(v1);
             HashSet<Aresta> buffer = new HashSet<Aresta>();
             for (Aresta a : arestas) {
                     if (a.liga(v1, v2)) {
                             buffer.add(a);
                     }
             }
             for (Aresta a : buffer) {
                     arestas.remove(a);
             }
     }

     public int ordem() {
             return dicionário.size();
     }

     public Collection<Vértice> vértices() {
             return dicionário.keySet();
     }

     public Vértice umVértice() {
             return (Vértice) vértices().toArray()[0];
     }

     @SuppressWarnings("unchecked")
     public Collection<Vértice> adjacentes(Vértice v) {
             return (Collection<Vértice>) dicionário.get(v).clone();
     }

     public int grau(Vértice v) {
    	 return dicionário.get(v).size();
    	}

     public String éCompleto() {
             Integer nArestas = ordem() - 1;
             for (Collection<Vértice> c : dicionário.values()) {
                     if (c.size() != nArestas) {
                    	 
                             return ("Esse grafo não é completo");
                             
                     }
             }
             return ("Esse grafo é completo");
     }

     public Collection<Vértice> fechoTransitivo(Vértice v) {
             return procuraFechoTransitivo(v, new HashSet<Vértice>());
     }

     private Collection<Vértice> procuraFechoTransitivo(Vértice v,
                     Collection<Vértice> encontrados) {
             encontrados.add(v);
             for (Vértice outro : dicionário.get(v)) {
                     if (!encontrados.contains(outro)) {
                             procuraFechoTransitivo(outro, encontrados);
                     }
             }
             return encontrados;
     }

     public boolean éConexo() {
             return vértices().equals(fechoTransitivo(umVértice()));
     }

     public String éÁrvore() {
             if( éConexo() && (arestas.size() == ordem() - 1)){
            	 return ("Esse grafo é árvore");
             }
             else{
			 return ("Esse grafo não é arvore");
             }
     }

     @SuppressWarnings("unchecked")
     public Collection<Aresta> arestas() {
             return (Collection<Aresta>) arestas.clone();
     }

     public Vértice getVertice(String nomeDoVertice) {
             for (Vértice v : dicionário.keySet()) {
                     if (v.getNome().equalsIgnoreCase(nomeDoVertice)) {
                             return v;
                     }
             }
             return null;
     }

     protected Aresta getArestaEntre(Vértice v1, Vértice v2) {
             for (Aresta a : arestas) {
                     if (a.liga(v1, v2))
                             return a;
             }
             return null;
     }
}
public class JanelaTela extends JFrame implements ActionListener{

	private static final long serialVersionUID = 1L;
	private JButton btConectar, btDesconectar, btAdicionar, btRemover, btCancelar;
	private JButton btCompletarGrafo, btGrafoÉCompleto, btGrafoÉArvore, btBuscaLargura, btVerticesPendentes;
	private JLabel lbNomeVertice, lbLinhaCima, lbLinhaBaixo;
	private JTextField txNomeVertice;
	private JPanel pnSul, pnNorte, pnCentro;
	private Grafos grafo;
    private PainelDoGrafo painelDoGrafo;
    private String situacao1 = "";
    private String situacao2 = "";
	private String situacao3 = "";
	
	public JanelaTela(Grafos grafo){
		this.grafo = grafo;
		
		setTitle("Teoria dos Grafos");
		setSize(800, 700);
		// PAINEL NORTE DA TELA
		pnNorte = new JPanel();
		pnNorte.setLayout(null);
		pnNorte.setBounds(0,0, 820, 70);
		pnNorte.setBackground(Color.LIGHT_GRAY);
		// PAINEL SUL DA TELA
		pnSul = new JPanel();
		pnSul.setLayout(null);
		pnSul.setBounds(0, 600, 820, 100);
		pnSul.setBackground(Color.lightGray);
		// PAINEL CENTRAL DA TELA
		pnCentro = new JPanel();
		pnCentro.setLayout(new BorderLayout());
		//CONSTROI AS JLABEL DOS PAINEIS
		lbNomeVertice = new JLabel("Nome do vértice:");
		lbNomeVertice.setBounds(310, 10, 150, 20);
		lbLinhaCima= new JLabel("=================================================================================================================");
		lbLinhaCima.setBounds(0, 60, 800, 10);
		lbLinhaBaixo= new JLabel("=================================================================================================================");
		lbLinhaBaixo.setBounds(0, 5, 800, 10);
		// ADICIONA AS JLABEL NOS PAINEIS
		pnSul.add(lbLinhaBaixo);
		pnNorte.add(lbLinhaCima);
		pnNorte.add(lbNomeVertice);
		//CONTROI OS JTEXTFIELD
		txNomeVertice= new JTextField();
		txNomeVertice.setBounds(410, 10, 50, 20);
		//ADICIONA O JTEXTFIELD NO PAINEL
		pnNorte.add(txNomeVertice);
		//CONTROI OS BOTÕES
		btAdicionar = new JButton(" Adicionar ");
		btAdicionar.setBounds(5, 35, 150, 20);
		btRemover = new JButton(" Remover ");
		btRemover.setBounds(160, 35, 150, 20);
		btConectar = new JButton(" Conectar ");
		btConectar.setBounds(315, 35, 150, 20);
		btDesconectar = new JButton(" Desconectar ");
		btDesconectar.setBounds(470, 35, 150, 20);
		btCancelar = new JButton(" Sair ");
		btCancelar.setBounds(625, 35, 150, 20);
		//ADICIONA OS BOTÕES NOS PAINEIS
		pnNorte.add(btCancelar);
		pnNorte.add(btAdicionar);
		pnNorte.add(btRemover);
		pnNorte.add(btConectar);
		pnNorte.add(btDesconectar);
		// CONSTROI MAIS BOTÕES
		btGrafoÉCompleto = new JButton(" Grafo Completo ");
		btGrafoÉCompleto.setBounds(5, 20, 150, 20);
		btGrafoÉArvore = new JButton(" Grafo árvore ");
		btGrafoÉArvore.setBounds(160, 20, 150, 20);
		btVerticesPendentes = new JButton(" Vértices pendentes ");
		btVerticesPendentes.setBounds(315, 20, 151, 20);
		btBuscaLargura = new JButton(" Busca em largura ");
		btBuscaLargura.setBounds(470, 20, 150, 20);
		btCompletarGrafo = new JButton(" Completar grafo ");
		btCompletarGrafo.setBounds(625, 20, 150, 20);
		//ADICIONA OS BOTÕES NOVAMENTE
		pnSul.add(btGrafoÉCompleto);
		pnSul.add(btGrafoÉArvore);
		pnSul.add(btVerticesPendentes);
		pnSul.add(btBuscaLargura);
		pnSul.add(btCompletarGrafo);
				
		// ADICIONA OS PAINEIS NA FRAME
		getContentPane().add(pnNorte);
		getContentPane().add(pnSul);
		getContentPane().add(pnCentro);
		//CONSTROI O PAINEL PARA INSERIR O GRAFOS
		painelDoGrafo = new PainelDoGrafo(grafo);
		//ADICIONA O GRAFO NO PAINEL
		pnCentro.add(painelDoGrafo);
		//TRATA OS EVENTOS DOS BOTÕES
		btAdicionar.addMouseListener(new TratadorDoBotãoAdicionar(this));
		btRemover.addMouseListener(new TratadorDoBotãoRemover(this));
		btConectar.addMouseListener(new TratadorDoBotãoConectar(this));
		btDesconectar.addMouseListener(new TratadorDoBotãoDesconectar(this));
		btCompletarGrafo.addMouseListener(new TratadorDoBotãoCompletarOGrafo(this));
		btGrafoÉCompleto.addActionListener(this);
		btGrafoÉArvore.addActionListener(this);
		btBuscaLargura.addActionListener(this);
		btVerticesPendentes.addActionListener(this);
		btCancelar.addActionListener(this);
		
		
	}
	
	public void actionPerformed(ActionEvent acao) {
		if (acao.getSource()== btGrafoÉCompleto){
			grafoCompleto();
			
		}
		else if (acao.getSource()== btGrafoÉArvore){
			grafoArvore();
		}
		else if(acao.getSource()== btBuscaLargura){
			buscaLargura();
		}
		else if (acao.getSource()==btVerticesPendentes){
			verticesPendentes();
			
		}
		else if (acao.getSource()== btCancelar){
			System.exit(0);
		}
		
	}
	public void verticesPendentes(){
		   
			situacao3   = "grafo.grau()";
			JOptionPane.showMessageDialog( null , " "+ situacao3 , " Situação do grafo",
					JOptionPane.INFORMATION_MESSAGE );
		atualizar();
		
	}
	public void buscaLargura(){
		atualizar();

	}
	public void grafoArvore(){
		situacao1 = grafo.éÁrvore();
		JOptionPane.showMessageDialog( null , " "+ situacao1, " Situação do grafo",
				JOptionPane.INFORMATION_MESSAGE ); 
		atualizar();		
	}
	
	public void grafoCompleto(){
		
		situacao2 = grafo.éCompleto();
		JOptionPane.showMessageDialog( null , " "+ situacao2, " Situação do grafo",
				JOptionPane.INFORMATION_MESSAGE ); 
		atualizar();
		
		}
	
	 public void adicionaVértice() {
         painelDoGrafo.adicionaVértice(new Vértice(txNomeVertice.getText()));
         atualizar();
         txNomeVertice.setText("");
         }

     public void removeVértices() {
         painelDoGrafo.removerVértices();
         atualizar();
         }

     public void conectaVértices() {
         painelDoGrafo.conectaVértices();
         atualizar();
         }

     public void desconectaVértices() {
         painelDoGrafo.desconectaVértices();
         atualizar();
         }

     private void atualizar() {
         paint(getGraphics());
         }
 	
	public static void main(String[] args) {
		Metro metro = new Metro();
		JanelaTela tl = new JanelaTela(metro);
		tl.setVisible(true);
		tl.setLocationRelativeTo(null);
		tl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}
se precisar coloco o resto das classes....

1 Resposta

R

o problema ocorre no metodo grau que preciso passar um objeto pra ele, não sei como fazer isso…
desde jah agradeço

Criado 13 de junho de 2013
Ultima resposta 13 de jun. de 2013
Respostas 1
Participantes 1