Ir ao conteúdo

Java Navegar por uma Lista Duplamente Encadeada com uma interface grafica


Posts recomendados

Postado

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);

	}
}

 

Postado
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?

Postado

@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.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!