Ir ao conteúdo
  • Cadastre-se

Java Navegar por uma Lista Duplamente Encadeada com uma interface grafica


Visitante

Posts recomendados

Sou bem iniciante em programação e estou codificando esse programa para um trabalho.

Tenho uma "filmoteca", preciso fazer navegação por uma lista lista encadeada com uma interface gráfica. Não sei como posso pegar os dados ordenados e passar para interface para fazer a navegação com a interface gráfica. Alguém pode me ajudar, por favor?

Classe Principal

public class Filme {

	private String titulo;
	private String sinopse;
	private String produtora;
	private String atorPrincipal;
	private String estilo;
	private String caminhoDoArquivoDaCapa;

	private Filme antTitulo;
	private Filme proxTitulo;

	protected final static String SEPARADOR = ";";

	public Filme(String titulo, String sinopse, String produtora, String atorPrincipal, String estilo,
			String caminhoDoArquivoDaCapa) {

		this.titulo = titulo;
		this.sinopse = sinopse;
		this.produtora = produtora;
		this.atorPrincipal = atorPrincipal;
		this.estilo = estilo;
		this.caminhoDoArquivoDaCapa = caminhoDoArquivoDaCapa;

		this.antTitulo = null;
		this.proxTitulo = null;
	}

	public Filme() {
		super();
		// TODO Auto-generated constructor stub
	}

	public void imprimeFilme() {
		System.out.println("Filme: " + titulo);
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getSinopse() {
		return sinopse;
	}

	public void setSinopse(String sinopse) {
		this.sinopse = sinopse;
	}

	public String getProdutora() {
		return produtora;
	}

	public void setProdutora(String produtora) {
		this.produtora = produtora;
	}

	public String getAtorPrincipal() {
		return atorPrincipal;
	}

	public void setAtorPrincipal(String atorPrincipal) {
		this.atorPrincipal = atorPrincipal;
	}

	public String getEstilo() {
		return estilo;
	}

	public void setEstilo(String estilo) {
		this.estilo = estilo;
	}

	public String getCaminhoDoArquivoDaCapa() {
		return caminhoDoArquivoDaCapa;
	}

	public void setCaminhoDoArquivoDaCapa(String caminhoDoArquivoDaCapa) {
		this.caminhoDoArquivoDaCapa = caminhoDoArquivoDaCapa;
	}

	public Filme getAntTitulo() {
		return antTitulo;
	}

	public void setAntTitulo(Filme antTitulo) {
		this.antTitulo = antTitulo;
	}

	public Filme getProxTitulo() {
		return proxTitulo;
	}

	public void setProxTitulo(Filme proxTitulo) {
		this.proxTitulo = proxTitulo;
	}

}

Lista Duplamente Encadeada

public class Filmoteca {

	private Filme primeiroTitulo;
	private Filme ultimoTitulo;
	private Filme atual;

	public Filmoteca() {
		this.primeiroTitulo = null;
		this.ultimoTitulo = null;
		this.atual = null;
	}

	public Boolean estaVazioFilme() {
		return (this.primeiroTitulo == null);

	}

	public void insereOrdenadoPorTitulo(Filme filme) {

		Filme aux, anterior;

		if (this.estaVazioFilme()) {
			this.primeiroTitulo = this.ultimoTitulo = filme;
			return;
		}

		if (filme.getTitulo().compareTo(this.primeiroTitulo.getTitulo()) < 0) {
			filme.setProxTitulo(this.primeiroTitulo);
			this.primeiroTitulo.setAntTitulo(filme);
			this.primeiroTitulo = filme;
			return;
		}

		anterior = this.primeiroTitulo;
		for (aux = this.primeiroTitulo.getProxTitulo(); aux != null
				&& filme.getTitulo().compareTo(aux.getTitulo()) > 0; aux = aux.getProxTitulo()) {
			anterior = aux;
		}

		anterior.setProxTitulo(filme);
		filme.setAntTitulo(anterior);
		filme.setProxTitulo(aux);

		if (filme.getProxTitulo() == null) {
			this.ultimoTitulo = filme;
		} else {
			aux.setAntTitulo(filme);
		}
	}

	public String imprimeFilmesTitulo() {
		for (Filme qtsFilme = this.primeiroTitulo; qtsFilme != null; qtsFilme = qtsFilme.getProxTitulo()) {
			qtsFilme.imprimeFilme();
		}
		return null;
	}
}

Classe com métodos de Salvar o Filme em um arquivo txt, e de fazer a leitura do arquivo e inserir a lista duplamente encadeada.

public class ManipulaArquivo extends Filme {

	public static File selecionarArquivo() {
		File arquivo = new File("Filmes.txt");
		try {

			if (!arquivo.exists()) {

				arquivo.createNewFile();
			}
		} catch (IOException e) {

			e.printStackTrace();
		}
		return arquivo;
	}

	public String Salvar() {

		try {

			FileWriter fw = new FileWriter(selecionarArquivo(), true);
			PrintWriter pw = new PrintWriter(fw);

			pw.println(this.getTitulo() + SEPARADOR + this.getEstilo() + SEPARADOR + this.getAtorPrincipal() + SEPARADOR
					+ this.getProdutora() + SEPARADOR + this.getSinopse() + SEPARADOR
					+ this.getCaminhoDoArquivoDaCapa());

			pw.flush();
			pw.close();
			fw.close();

		} catch (IOException e) {

			e.printStackTrace();
		}

		return "Salvo com sucesso!";

	}

	public String RecuperaPorTitulo() {

		Filmoteca filmoteca = new Filmoteca();

		try {

			FileReader fr = new FileReader(selecionarArquivo());
			BufferedReader br = new BufferedReader(fr);

			String line;
			while ((line = br.readLine()) != null) {
				final String[] campos = line.split(SEPARADOR);
				final Filme filme = new Filme(campos[0], campos[1], campos[2], campos[3], campos[4], campos[5]);
				filmoteca.insereOrdenadoPorTitulo(filme);
			}

			fr.close();
			br.close();

		} catch (IOException e) {

		}
		return filmoteca.imprimeFilmesTitulo();

	}

}

Interface gráfica para fazer a navegação

public class VisualizarFilme extends Filme {

	JFrame frmFilmoteca;
	private JTextField textTitulo;
	private JTextField textEstilo;
	private JTextField textAtor;
	private JTextField textProdutora;
	private JTextField textSinopse;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VisualizarFilme window = new VisualizarFilme();
					window.frmFilmoteca.setVisible(true);

				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public VisualizarFilme() {
		initialize();
	}

	private void initialize() {
		frmFilmoteca = new JFrame();
		frmFilmoteca.setTitle("Filmoteca");
		frmFilmoteca.setBounds(100, 100, 747, 356);
		frmFilmoteca.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmFilmoteca.getContentPane().setLayout(null);

		JLabel Label_imagem = new JLabel("");
		Label_imagem.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
		Label_imagem.setBounds(557, 27, 161, 220);
		frmFilmoteca.getContentPane().add(Label_imagem);

		JLabel Label_Titulo = new JLabel("T\u00EDtulo");
		Label_Titulo.setFont(new Font("Arial", Font.PLAIN, 18));
		Label_Titulo.setBounds(61, 27, 56, 14);
		frmFilmoteca.getContentPane().add(Label_Titulo);

		JLabel Label_Estilo = new JLabel("Estilo");
		Label_Estilo.setFont(new Font("Arial", Font.PLAIN, 18));
		Label_Estilo.setBounds(68, 65, 49, 14);
		frmFilmoteca.getContentPane().add(Label_Estilo);

		JLabel Label_AtorPrincipal = new JLabel("Ator Principal");
		Label_AtorPrincipal.setFont(new Font("Arial", Font.PLAIN, 18));
		Label_AtorPrincipal.setBounds(10, 109, 107, 14);
		frmFilmoteca.getContentPane().add(Label_AtorPrincipal);

		JLabel Label_Produtora = new JLabel("Produtora");
		Label_Produtora.setFont(new Font("Arial", Font.PLAIN, 18));
		Label_Produtora.setBounds(32, 153, 85, 14);
		frmFilmoteca.getContentPane().add(Label_Produtora);

		JLabel Label_Sinopse = new JLabel("Sinopse");
		Label_Sinopse.setFont(new Font("Arial", Font.PLAIN, 18));
		Label_Sinopse.setBounds(51, 197, 66, 14);
		frmFilmoteca.getContentPane().add(Label_Sinopse);

		textTitulo = new JTextField();
		textTitulo.setColumns(10);
		textTitulo.setBounds(127, 23, 412, 26);
		frmFilmoteca.getContentPane().add(textTitulo);

		textEstilo = new JTextField();
		textEstilo.setColumns(10);
		textEstilo.setBounds(127, 61, 412, 26);
		frmFilmoteca.getContentPane().add(textEstilo);

		textAtor = new JTextField();
		textAtor.setColumns(10);
		textAtor.setBounds(127, 105, 412, 26);
		frmFilmoteca.getContentPane().add(textAtor);

		textProdutora = new JTextField();
		textProdutora.setColumns(10);
		textProdutora.setBounds(127, 149, 412, 26);
		frmFilmoteca.getContentPane().add(textProdutora);

		textSinopse = new JTextField();
		textSinopse.setColumns(10);
		textSinopse.setBounds(127, 193, 412, 54);
		frmFilmoteca.getContentPane().add(textSinopse);

		JButton bntAnterior = new JButton("Anterior");
		bntAnterior.setFont(new Font("Arial", Font.PLAIN, 18));
		bntAnterior.setBounds(88, 269, 107, 34);
		frmFilmoteca.getContentPane().add(bntAnterior);

		JButton bntExclusão = new JButton("Exclus\u00E3o");
		bntExclusão.setFont(new Font("Arial", Font.PLAIN, 18));
		bntExclusão.setBounds(230, 269, 107, 34);
		frmFilmoteca.getContentPane().add(bntExclusão);

		JButton bntNovo = new JButton("Novo");
		bntNovo.setFont(new Font("Arial", Font.PLAIN, 18));
		bntNovo.setBounds(373, 269, 107, 34);
		frmFilmoteca.getContentPane().add(bntNovo);

		JButton bntProximo = new JButton("Pr\u00F3ximo");
		bntProximo.setFont(new Font("Arial", Font.PLAIN, 18));
		bntProximo.setBounds(514, 269, 107, 34);
		frmFilmoteca.getContentPane().add(bntProximo);

	}
}

 

Link para o comentário
Compartilhar em outros sites

41 minutos atrás, defera172 disse:
public void insereOrdenadoPorTitulo(Filme filme)

parece que você já ordena os filmes na hora da inserção certo?

 

43 minutos atrás, defera172 disse:
public String imprimeFilmesTitulo()

 

basta percorrer a lista então, não?

Link para o comentário
Compartilhar em outros sites

@Arthur Sapore

3 horas atrás, Arthur Sapore disse:

parece que você já ordena os filmes na hora da inserção certo?

 

 

basta percorrer a lista então, não?

Faço a gravação dos dados em um arquivo de texto, após  a gravação e feito a leitura do arquivo inserido na lista encadeada.

Filmoteca.PNG.77fc41c86e9d29432b54317576bbaf49.PNG

 

Estou com dificuldade de como pegar os dados da ordenação e passar para o frame para fazer a navegação.

Link para o comentário
Compartilhar em outros sites

@defera172 amigo, pelo o que andei pesquisando você pode usar o JTextArea. Desta forma:

JTextArea area = new JTextArea();

area.setText("Coloque seu texto aqui");

 

Também não mexo muito com parte gráfica.

 

http://javainterface.wikidot.com/interfacejava dê uma olhada neste site, é uma espécie de documentação,  talvez te ajude.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.