0
I am very beginner in programming and I am coding this program for a job.
I have a "Filmoteca", I need to navigate through a list chained with a graphical interface. I don’t know how I can navigate with ordered data. I put the window print with the classes. If anyone can help me, please?
Main Class
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;
}
}
Double Chained List
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;
}
}
Class with Save Movie methods in a txt file, and to read the file and insert the double-chained list.
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();
}
}
Graphical interface for navigating
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);
}
}