Ajuda com GUI e padrão MVP

6 respostas
H

Estou desenvolvendo uma aplicação simples de gerencia de uma biblioteca como trabalho de faculdade e estou como os seguintes problemas:

Tenho até o momento duas telas a principal e a tela de cadastro, não estou conseguindo posicionar os elementos da tela de cadastro na tela principal.No caso como faço para acionar um evento e criar a tela de cadastro no panel principal da tela principal.
O segundo problema e com relação a Desing Pattern, gostaria de trabalhar com MVP, mas não sei como fazer isso.Alguém teria uma aplicação em MVP para me passar para eu dar uma olha de como funciona?Porque as que eu encontrei pela rede não funcionavam.

Segue as classe q eu estou usando.

CLASSE VISUALTESTE

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.MouseEvent; 

import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JPanel; 

public class VisualTeste { 

private JFrame jPrincipal; 
private JPanel jTela; 
private JMenuBar jMenuBar; 
private JMenu jArquivo; 
private JMenu jCadastro; 
private JMenu jPesquisa; 
private JMenu jSobre; 



public VisualTeste (){ 
jPrincipal = new JFrame("Livraria"); 
jTela = new JPanel(); 
jMenuBar = new JMenuBar(); 
jArquivo = new JMenu("Arquivo"); 
jCadastro = new JMenu("Cadastro"); 
jPesquisa = new JMenu("Pesquisa"); 
jSobre = new JMenu("Sobre"); 

//Teste De Evento da Chamada da Tela Cadastro 
jCadastro.addMouseListener(new java.awt.event.MouseAdapter(){ 
public void mouseClicked(MouseEvent evt) { 
TeladeCadastroActionPerformed(evt); 
} 
});//Fim Do Teste de Evento 
} 

//Evento do Cadastro 
public void TeladeCadastroActionPerformed(MouseEvent evt) { 
TeladeCadastroTeste tc = new TeladeCadastroTeste(); 
System.out.println("Evento Acionado Tela de Cadastro"); 
tc.MontarTeladeCadastro(); 

//Labels 
jTela.add(tc.getLabelAutor()); 
jTela.add(tc.getLabelEditora()); 
jTela.add(tc.getLabelLivro()); 

jTela.getComponent(0).setBounds(60,10,40,14); 
jTela.getComponent(1).setBounds(260,10,50,14); 
jTela.getComponent(2).setBounds(170,120,40,120); 

//Panels 
jTela.add(tc.getPanelAutor()); 
jTela.add(tc.getPanelEditora()); 
jTela.add(tc.getPanellLivro()); 

jTela.getComponent(3).setBounds(20,30,130,120); 
jTela.getComponent(4).setBounds(230,30,130,120); 
jTela.getComponent(5).setBounds(20,190,350,230); 
jTela.setSize(500,500); 

jTela.repaint(); 

} 

public void MontarTela(){ 
jTela.setLayout(null); 
jTela.setSize(450,450); 
jMenuBar.add(jArquivo); 
jMenuBar.add(jCadastro); 
jMenuBar.add(jPesquisa); 
jMenuBar.add(jSobre); 
jPrincipal.add(jMenuBar,BorderLayout.NORTH); 
jPrincipal.add(jTela,BorderLayout.CENTER); 

} 

public void MostrarTela(){ 
jPrincipal.setSize(500,500); 
jPrincipal.setVisible(true); 
jPrincipal.setLocation(250,250); 
jPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 


}

CLASSE TELADECADASTROTESTE

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class TeladeCadastroTeste { 

private JPanel jPrincipal; 
private JPanel jAutor; 
private JPanel jEditora; 
private JPanel jLivro; 
private JTextField jNomeAutor; 
private JTextField jSobreNomeAutor; 
private JTextField jNomeEditora; 
private JTextField jISBNLivro; 
private JTextField jTituloLivro; 
private JTextField jCopyRightLivro; 
private JTextField jNEditoraLivro; 
private JTextField jQntCopiasLivro; 
private JTextField jImgLivro; 
private JTextField jPrecoLivro; 
private JLabel jlNomeAutor; 
private JLabel jlSobreNomeAutor; 
private JLabel jlNomeEditora; 
private JLabel jlISBNLivro; 
private JLabel jlTituloLivro; 
private JLabel jlCopyRightLivro; 
private JLabel jlNEditoraLivro; 
private JLabel jlQntCopiasLivro; 
private JLabel jlImgLivro; 
private JLabel jlPrecoLivro; 
private JLabel jlLivro; 
private JLabel jlAutor; 
private JLabel jlEditora; 



public TeladeCadastroTeste(){ 

jPrincipal = new JPanel(); 
jAutor = new JPanel(); 
jEditora = new JPanel(); 
jLivro = new JPanel(); 
jNomeAutor = new JTextField(); 
jSobreNomeAutor = new JTextField(); 
jNomeEditora = new JTextField(); 
jISBNLivro = new JTextField(); 
jTituloLivro = new JTextField(); 
jCopyRightLivro = new JTextField(); 
jNEditoraLivro = new JTextField(); 
jQntCopiasLivro = new JTextField(); 
jImgLivro = new JTextField(); 
jPrecoLivro = new JTextField(); 
jlNomeAutor = new JLabel("Nome"); 
jlSobreNomeAutor = new JLabel("SobreNome"); 
jlNomeEditora = new JLabel("Nome"); 
jlISBNLivro = new JLabel("ISBN"); 
jlTituloLivro = new JLabel("Titulo"); 
jlCopyRightLivro = new JLabel("CopyRight"); 
jlNEditoraLivro = new JLabel("Número da Editora"); 
jlQntCopiasLivro = new JLabel("Quantitade de Copias"); 
jlImgLivro = new JLabel("Imagem"); 
jlPrecoLivro = new JLabel("Preço"); 
jlLivro = new JLabel("LIVRO"); 
jlAutor = new JLabel("AUTOR"); 
jlEditora = new JLabel("EDITORA"); 
} 

public JPanel MontarTeladeCadastro(){ 

jAutor.setLayout(null); 
jEditora.setLayout(null); 
jLivro.setLayout(null); 

jAutor.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED 
, new java.awt.Color(51, 51, 51), new java.awt.Color(153, 153, 153))); 
jEditora.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED 
, new java.awt.Color(51, 51, 51), new java.awt.Color(153, 153, 153))); 
jLivro.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED 
, new java.awt.Color(51, 51, 51), new java.awt.Color(153, 153, 153))); 

//Panel Autor 
jlNomeAutor.setSize(70,20); 


jlNomeAutor.setBounds(10,10,27,14); 
jNomeAutor.setBounds(10,30,59,20); 
jlSobreNomeAutor.setBounds(10,60,60,14); 
jSobreNomeAutor.setBounds(10,80,59,20); 

jAutor.setBounds(10,80,59,20); 

jAutor.add(jlNomeAutor); 
jAutor.add(jNomeAutor); 
jAutor.add(jlSobreNomeAutor); 
jAutor.add(jSobreNomeAutor); 

//Panel Editora 
jEditora.add(jlNomeEditora); 
jEditora.add(jNomeEditora); 

jlNomeEditora.setBounds(10,10,27,14); 
jNomeEditora.setBounds(10,30,59,20); 

jEditora.setBounds(230,30,130,120); 

//Panel Livro 
jLivro.add(jlISBNLivro); 
jLivro.add(jlTituloLivro); 
jLivro.add(jlCopyRightLivro); 
jLivro.add(jlNEditoraLivro); 
jLivro.add(jlQntCopiasLivro); 
jLivro.add(jlImgLivro); 
jLivro.add(jlPrecoLivro); 
jLivro.add(jISBNLivro); 
jLivro.add(jTituloLivro); 
jLivro.add(jCopyRightLivro); 
jLivro.add(jNEditoraLivro); 
jLivro.add(jQntCopiasLivro); 
jLivro.add(jImgLivro); 
jLivro.add(jPrecoLivro); 

jlISBNLivro.setBounds(20,10,23,14); 
jlTituloLivro.setBounds(190,10,26,14); 
jlCopyRightLivro.setBounds(20,60,60,14); 
jlNEditoraLivro.setBounds(190,60,90,14); 
jlQntCopiasLivro.setBounds(20,110,110,14); 
jlImgLivro.setBounds(190,110,38,14); 
jlPrecoLivro.setBounds(20,160,27,14); 
jISBNLivro.setBounds(20,30,120,20); 
jTituloLivro.setBounds(190,30,140,20); 
jCopyRightLivro.setBounds(20,80,59,20); 
jNEditoraLivro.setBounds(190,80,59,20); 
jQntCopiasLivro.setBounds(20,130,59,20); 
jImgLivro.setBounds(190,130,59,20); 
jPrecoLivro.setBounds(20,180,65,20); 

//Frame Principal 
jPrincipal.add(jAutor); 
jPrincipal.add(jEditora); 
jPrincipal.add(jLivro); 
jPrincipal.add(jlAutor); 
jPrincipal.add(jlEditora); 
jPrincipal.add(jlLivro); 

jlAutor.setBounds(60,10,40,14); 
jlEditora.setBounds(260,10,50,14); 
jlLivro.setBounds(170,170,34,120); 
jAutor.setBounds(20,30,130,120); 
jEditora.setBounds(230,30,130,120); 
jLivro.setBounds(20,190,350,230); 


System.out.println("Montou a tela!"); 
return jPrincipal; 
} 

//Teste Mandando Labels 
public JLabel getLabelAutor(){ 
return jlAutor; 
} 
public JLabel getLabelEditora(){ 
return jlEditora; 
} 
public JLabel getLabelLivro(){ 
return jlLivro; 
} 

//Teste Mandando Panels 
public JPanel getPanelAutor(){ 
return jAutor; 
} 
public JPanel getPanelEditora(){ 
return jEditora; 
} 
public JPanel getPanellLivro(){ 
return jLivro; 
}

}

CLASSE MAIN

public class Main { 
public static void main(String args[]){ 
VisualTeste vc = new VisualTeste(); 
vc.MontarTela(); 
vc.MostrarTela(); 
} 

}

Grato,

Humphrey

6 Respostas

C

Não seria MVC?
Aqui no GUJ tem um tutorial que implementa JTable com MVC.
Dá uma pesquisada.
Um abraço.
Charles

C

Se quiser me manda um email:[email removido]
Eu te passo o código de uma aplicação swing completa,só que não está MVC

Pedrosa

Chalé:
Não seria MVC?
Aqui no GUJ tem um tutorial que implementa JTable com MVC.
Dá uma pesquisada.
Um abraço.
Charles

Exatamente é MVP de uma lida nisso:

http://www.javafree.org/content/view.jf?idContent=91

C

Vivendo e aprendendo…

H

E MVP mesmo!!!
mas valeu sobre o tutorial, vou dar uma olhada

tRuNkSnEt

Só uma dica, coloca seu código entre a tag , dá até gastura de olhar seu codigo.

Até!

Criado 4 de maio de 2006
Ultima resposta 5 de mai. de 2006
Respostas 6
Participantes 4