Ir para conteúdo
Defera172

Lista duplamente encadeada com uma interface gráfica para fazer navegação da lista

Recommended Posts

Sou novo na programação estou com dificuldade. Implementei uma lista duplamente encadeada preciso navegar pelos dados ordenados da lista por uma interface gráfica, tanto no sentido de próximo quanto anterior, só que não sei por começar para passar os dados na interface para permitir a navegabilidade, já tenho a interface gráfica pronta e a lista encadeada pronta, só não sei como posso fazer para passar os dados de forma ordenada para a interface. Coloquei todas as classes dos projeto se Alguém puder me ajudar a como prosseguir?

 

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 antAtor;
    private Filme antEstilo;
    private Filme proxTitulo;
    private Filme proxAtor;
    private Filme proxEstilo;

    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.antAtor = null;
        this.antEstilo = null;
        this.proxTitulo = null;
        this.proxAtor = null;
        this.proxEstilo = null;
    }

    public Filme() {
        super();
    }

    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 getAntAtor() {
        return antAtor;
    }

    public void setAntAtor(Filme antAtor) {
        this.antAtor = antAtor;
    }

    public Filme getAntEstilo() {
        return antEstilo;
    }

    public void setAntEstilo(Filme antEstilo) {
        this.antEstilo = antEstilo;
    }

    public Filme getProxTitulo() {
        return proxTitulo;
    }

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

    public Filme getProxAtor() {
        return proxAtor;
    }

    public void setProxAtor(Filme proxAtor) {
        this.proxAtor = proxAtor;
    }

    public Filme getProxEstilo() {
        return proxEstilo;
    }

    public void setProxEstilo(Filme proxEstilo) {
        this.proxEstilo = proxEstilo;
    }
}

Lista Duplamente encadeada

public class Filmoteca {
    private Filme primeiroTitulo;
    private Filme ultimoTitulo;

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

    public Boolean estaVazio() {
        return (primeiroTitulo == null);
    }

    public void insereOrdenadoPorTitulo(Filme filme) {
        Filme aux, anterior;

        if (estaVazio()) { // Checa se a lista está vazia.
            primeiroTitulo = ultimoTitulo = filme; // Primeiro e último.
            return; // Sai da rotina.
        }

        // Se continuou, a lista não está vazia.
        if (filme.getTitulo().compareTo(primeiroTitulo.getTitulo()) < 0) {// O novo filme, é o primeiro?
            filme.setProxTitulo(primeiroTitulo);
            primeiroTitulo.setAntTitulo(filme);
            primeiroTitulo = filme;
            return; // Sai da rotina.
        }
        // Se continuou é porque não é o único e nem o primeiro da lista.
        anterior = primeiroTitulo;
        for (aux = primeiroTitulo.getProxTitulo(); aux != null
                && filme.getTitulo().compareTo(aux.getTitulo()) > 0; aux = aux.getProxTitulo()) {
            anterior = aux;
        }
        // Encontrou a posição para inserir o novo filme.
        anterior.setProxTitulo(filme);
        filme.setAntTitulo(anterior);
        filme.setProxTitulo(aux);

        // Verifica seu o novo filme, é o último da lista.
        if (filme.getProxTitulo() == null) {
            ultimoTitulo = filme; // Sé é o último ajusta a referência ao último.
        } else {
            // Se não for o último aux deve apontar o novo filme como anterior.
            aux.setAntTitulo(filme);
        }
    }

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

Classe que seta os dados na lista encadeada

public class ManipulaArquivo extends Filme {

    Filmoteca filmoteca = new Filmoteca();

    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() {

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

Algoritmo da interface gráfica

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.UIManager;

import br.com.geral.Filme;

public class VisualizarFilme {

    JFrame frmFilmoteca;
    private static JTextField textFieldTitulo;
    private static JTextField textFieldEstilo;
    private static JTextField textFieldAtor;
    private static JTextField textFieldProdutora;
    private static JTextField textFieldSinopse;
    private final ButtonGroup buttonGroup = new ButtonGroup();

    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.getContentPane().setFont(new Font("Arial", Font.PLAIN, 18));
        frmFilmoteca.setTitle("FILMOTECA");
        frmFilmoteca.setBounds(100, 100, 755, 387);
        frmFilmoteca.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmFilmoteca.getContentPane().setLayout(null);

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

        JLabel lblEstilo = new JLabel("Estilo");
        lblEstilo.setBounds(258, 56, 49, 14);
        lblEstilo.setFont(new Font("Arial", Font.PLAIN, 18));
        frmFilmoteca.getContentPane().add(lblEstilo);

        JLabel lblAtorPrincipal = new JLabel("Ator Principal");
        lblAtorPrincipal.setBounds(200, 100, 107, 14);
        lblAtorPrincipal.setFont(new Font("Arial", Font.PLAIN, 18));
        frmFilmoteca.getContentPane().add(lblAtorPrincipal);

        JLabel lblProdutora = new JLabel("Produtora");
        lblProdutora.setBounds(222, 144, 85, 14);
        lblProdutora.setFont(new Font("Arial", Font.PLAIN, 18));
        frmFilmoteca.getContentPane().add(lblProdutora);

        JLabel lblSinopse = new JLabel("Sinopse");
        lblSinopse.setFont(new Font("Arial", Font.PLAIN, 18));
        lblSinopse.setBounds(241, 188, 66, 14);
        frmFilmoteca.getContentPane().add(lblSinopse);

        textFieldTitulo = new JTextField();
        textFieldTitulo.setBorder(UIManager.getBorder("CheckBox.border"));
        textFieldTitulo.setBounds(317, 14, 412, 26);
        frmFilmoteca.getContentPane().add(textFieldTitulo);
        textFieldTitulo.setColumns(10);

        textFieldEstilo = new JTextField();
        textFieldEstilo.setBorder(UIManager.getBorder("CheckBox.border"));
        textFieldEstilo.setColumns(10);
        textFieldEstilo.setBounds(317, 52, 412, 26);
        frmFilmoteca.getContentPane().add(textFieldEstilo);

        textFieldAtor = new JTextField();
        textFieldAtor.setBorder(UIManager.getBorder("CheckBox.border"));
        textFieldAtor.setColumns(10);
        textFieldAtor.setBounds(317, 96, 412, 26);
        frmFilmoteca.getContentPane().add(textFieldAtor);

        textFieldProdutora = new JTextField();
        textFieldProdutora.setBorder(UIManager.getBorder("CheckBox.border"));
        textFieldProdutora.setColumns(10);
        textFieldProdutora.setBounds(317, 140, 412, 26);
        frmFilmoteca.getContentPane().add(textFieldProdutora);

        textFieldSinopse = new JTextField();
        textFieldSinopse.setBorder(UIManager.getBorder("CheckBox.border"));
        textFieldSinopse.setColumns(10);
        textFieldSinopse.setBounds(317, 184, 412, 54);
        frmFilmoteca.getContentPane().add(textFieldSinopse);

        JLabel Imagem = new JLabel("");
        Imagem.setBorder(UIManager.getBorder("CheckBox.border"));
        Imagem.setBounds(10, 14, 174, 224);
        frmFilmoteca.getContentPane().add(Imagem);

        JButton ButtonNovo = new JButton("Novo");
        ButtonNovo.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                RegistrarFilme registrarFilme = new RegistrarFilme();
                registrarFilme.GravarFilme.setVisible(true);

                frmFilmoteca.setVisible(false);

            }
        });
        ButtonNovo.setBounds(377, 288, 107, 34);
        ButtonNovo.setFont(new Font("Arial", Font.PLAIN, 18));
        frmFilmoteca.getContentPane().add(ButtonNovo);

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

        JButton ButtonProximo = new JButton("Pr\u00F3ximo");
        ButtonProximo.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

//              if (bntPorTitulo.isSelected()) {
//
//              }
//
//              else if (bntPorAtorPrincipal.isSelected()) {
//
//              }
//
//              else if (bntPorEstilo.isSelected()) {
//
//              }

            }
        });
        ButtonProximo.setBounds(518, 288, 107, 34);
        ButtonProximo.setFont(new Font("Arial", Font.PLAIN, 18));
        frmFilmoteca.getContentPane().add(ButtonProximo);

        JButton ButtonAnterior = new JButton("Anterior");
        ButtonAnterior.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

//              if (bntPorTitulo.isSelected()) {
//
//              }
//
//              else if (bntPorAtorPrincipal.isSelected()) {
//
//              }
//
//              else if (bntPorEstilo.isSelected()) {
//
//              }

            }
        });
        ButtonAnterior.setBounds(92, 288, 107, 34);
        ButtonAnterior.setFont(new Font("Arial", Font.PLAIN, 18));
        frmFilmoteca.getContentPane().add(ButtonAnterior);

        JLabel lblNavegação = new JLabel("Navega\u00E7\u00E3o");
        lblNavegação.setFont(new Font("Arial", Font.PLAIN, 18));
        lblNavegação.setBounds(114, 256, 93, 19);
        frmFilmoteca.getContentPane().add(lblNavegação);

        JRadioButton bntPorTitulo = new JRadioButton("Por t\u00EDtulo");
        buttonGroup.add(bntPorTitulo);
        bntPorTitulo.setFont(new Font("Arial", Font.PLAIN, 18));
        bntPorTitulo.setBounds(223, 250, 99, 31);
        frmFilmoteca.getContentPane().add(bntPorTitulo);

        JRadioButton bntPorAtorPrincipal = new JRadioButton("Por ator principal");
        buttonGroup.add(bntPorAtorPrincipal);
        bntPorAtorPrincipal.setFont(new Font("Arial", Font.PLAIN, 18));
        bntPorAtorPrincipal.setBounds(332, 250, 161, 31);
        frmFilmoteca.getContentPane().add(bntPorAtorPrincipal);

        JRadioButton bntPorEstilo = new JRadioButton("Por estilo");
        buttonGroup.add(bntPorEstilo);
        bntPorEstilo.setFont(new Font("Arial", Font.PLAIN, 18));
        bntPorEstilo.setBounds(501, 250, 101, 31);
        frmFilmoteca.getContentPane().add(bntPorEstilo);
    }

    public void SetarCampos() {

        Filme filme = new Filme();

        textFieldTitulo.setText(filme.getTitulo());
        textFieldEstilo.setText(filme.getEstilo());
        textFieldAtor.setText(filme.getAtorPrincipal());
        textFieldProdutora.setText(filme.getProdutora());
        textFieldSinopse.setText(filme.getSinopse());

    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Jack Oliveira
      Ola pessoal boa tarde
      estou tentando fazer um texto se mover dentro do input porem nao esta dando resultado que preciso
       
      Este é o codigo 
      <script type="text/javascript"> $(document).ready(function () { var frases = [{ 'elemento': $('input[name=search_string]'), 'frases': ["O que você está procurando?", "Buscar por: Academia, Barbearia, Churrascaria, Decoração, Escola, Farmácia, Gráfica, Imobiliaria, Lanchonete, Mecânica, Odontologia, Pizzaria...", "Faça sua busca por segmentos aqui.", "São mais de 3mil empresas para serem exploradas."] }]; animaInput(frases); }); </script>  
    • Por Rengavitp
      Boa noite pessoal!
       
      Estou fazendo um projeto web com spring boot e é a primeira vez que lido com imagens. Minha idéia é salvar imagens em uma pasta e depois recuperar essa imagem e mostrar, mas o problema que estou enfrentando é o seguinte, seu eu envio para o src do projeto na pasta imagens, eu até consigo acessar as imagens, mas preciso atualizar o projeto na IDE (isso vai acontecer em produção?) eu tentei salvar em uma pasta fora do source do projeto mas ai não consigo acessar. como devo fazer? fiz várias pesquisas, mas nenhuma me ajudou.
       
      Desde já agradeço.
    • Por Rengavitp
      Bom dia pessoal!

      Estou com o seguinte problema, tenho uma aplicação que funciona perfeitamente rodando na minha IDE (Spring Tool Suite) mas ao gerar o arquivo war e subir a aplicação no tom cat ele não funciona, mas apenas erro 404, abri o war e todos os arquivo estão lá, já tem seguir tudo quando e tutorial com problemas semelhantes mas nenhum resolveu. Abaixo mais informações,.

      Versão do java na aplicacao 11
      Versão do jva no servidor 11
      Versão do tomcat no servidor 8.5.55
       
      minha classe principal
      package br.com.masterplastfitas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MasterApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MasterApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MasterApplication.class); } } meu pom.xml
      <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.2</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>masterplast</groupId> <artifactId>Master</artifactId> <version>2.0</version> <packaging>war</packaging> <name>Master</name> <description>Aplicação web </description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> <dependency> <groupId>org.mindrot</groupId> <artifactId>jbcrypt</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.0</version> </dependency> </dependencies> <build> <plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> </plugins> </build> </project>  
    • Por Stephhany909
      While trying to persist an object with an attribute of type Point, defined as follows:
       
      @Entity @Table(name = "event") public class Event { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private long id; @Column(columnDefinition = "POINT") private Point coordinate; } I'm getting the error Data truncation: Cannot get geometry object from data you send to the GEOMETRY field.
      The corresponding database table is defined as follows:
       
      create table event ( id bigint not null auto_increment, coordinate POINT, primary key (id) ) engine= InnoDB; What am I missing?
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.