Alguém tem um exemplo bom de mvc? eu achei esse na net http://java.sun.com/developer/technicalArticles/javase/mvc/ só que tá meio confuso (não por causa do Inglês) mas na entendi direito o Model (modelo). Os valores precisam ficar fixos? Como fazer se for banco (SQL)?
O nome Model não é tão amigável, o Model na verdade são os dados que pode ser de um banco de dados, uma lista etc.
Tem livros de design patterns que explica como implementar em MVC um deles é Head First, isso para ambiente desktop e tem o MVC2 que é para WEB ai é mais fácil aprender Struts, JSF etc.
Alguém tem um exemplo bom de mvc? eu achei esse na net http://java.sun.com/developer/technicalArticles/javase/mvc/ só que tá meio confuso (não por causa do Inglês) mas na entendi direito o Model (modelo). Os valores precisam ficar fixos? Como fazer se for banco (SQL)?
Eu, quando estava começando em Java Web, tarefa essa que foi difícil devido ao meu histórico de utilização com Python, Ruby, PHP e outras, tb tive problemas. O que achei mais claro foi neste livro:
Foi o que me tornou fã dele. Ele fez uma explicação tão simples que só uma anta não aprenderia. Quando entra no MVC, ele passa depois suavemente para o Hibernate, JSF e depois com JPA (a.k.a EJB 3 Persistence). Pronto, clareou tudo.
Quanto a indicação do peczenyj, não concordo totalmente com o artigo do site Fragmental. Primeiro porque ele faz um uso de termos camadas que vai de encontro ao termo Layers usado no MVC pela própria SUN. Sugiro que leia bem o material da SUN, já que estamos usando Java. Mesmo que alguns achem o argumento bom, levo em consideração as informações oficiais da tecnologia em questão.
R
rickzale
Seguinte: tem essas classes! Gostaria de saber se são mesmo o View e o Model e o que falta no controler.
Segue as mesmas:
View:
importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;importjava.sql.*;publicclassListaFamiliasextendsjavax.swing.JFrame{publicConnectioncon=null;publicStatementstm=null;publicResultSetrs;publicStringtitulo;publicStringpegaTitulo(Stringstr){str=titulo;returnstr;}publicListaFamilias(){initComponents();setLocationRelativeTo(null);ListaFamiliasMm=newListaFamiliasM();m.atualizaLista(lstFamilias);setIconImage(Toolkit.getDefaultToolkit().getImage("c:\\ricardo\\telas\\sgod.jpg"));}// <editor-fold defaultstate="collapsed" desc=" Código Gerado ">//GEN-BEGIN:initComponentsprivatevoidinitComponents(){jScrollPane1=newjavax.swing.JScrollPane();lstFamilias=newjavax.swing.JList();btnSeleciona=newjavax.swing.JButton();btnSair=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);setTitle("Familias");setResizable(false);jScrollPane1.setViewportView(lstFamilias);btnSeleciona.setText("Seleciona");btnSeleciona.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){btnSelecionaActionPerformed(evt);}});btnSair.setText("Sair");btnSair.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){btnSairActionPerformed(evt);}});javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jScrollPane1,javax.swing.GroupLayout.Alignment.LEADING,javax.swing.GroupLayout.DEFAULT_SIZE,213,Short.MAX_VALUE).addGroup(layout.createSequentialGroup().addComponent(btnSeleciona).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,85,Short.MAX_VALUE).addComponent(btnSair))).addContainerGap()));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE,169,javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(btnSeleciona).addComponent(btnSair)).addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)));pack();}// </editor-fold>//GEN-END:initComponentsprivatevoidbtnSelecionaActionPerformed(java.awt.event.ActionEventevt){//GEN-FIRST:event_btnSelecionaActionPerformedtitulo=(String)lstFamilias.getSelectedValue();JOptionPane.showMessageDialog(null,"Familia Selecionada:\n"+titulo,"Familias",JOptionPane.INFORMATION_MESSAGE);//telaPrincipal.setTitle(titulo);}//GEN-LAST:event_btnSelecionaActionPerformedprivatevoidbtnSairActionPerformed(java.awt.event.ActionEventevt){//GEN-FIRST:event_btnSairActionPerformeddispose();}//GEN-LAST:event_btnSairActionPerformedpublicstaticvoidmain(Stringargs[]){try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(UnsupportedLookAndFeelExceptione){// handle exception}catch(ClassNotFoundExceptione){// handle exception}catch(InstantiationExceptione){// handle exception}catch(IllegalAccessExceptione){// handle exception}java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newListaFamilias().setVisible(true);}});}// Declaração de variáveis - não modifique//GEN-BEGIN:variablesprivatejavax.swing.JButtonbtnSair;privatejavax.swing.JButtonbtnSeleciona;privatejavax.swing.JScrollPanejScrollPane1;privatejavax.swing.JListlstFamilias;// Fim da declaração de variáveis//GEN-END:variables}
Model:
importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;importjava.io.*;importjava.sql.*;publicclassListaFamiliasM{publicConnectioncon=null;publicStatementstm=null;publicResultSetrs;publicJListlstFamilias;publicListaFamiliasM(){}publicvoidatualizaLista(JListlista){lstFamilias=lista;DefaultListModeldlm=newDefaultListModel();lstFamilias.setModel(dlm);try{Class.forName("com.mysql.jdbc.Driver");con=DriverManager.getConnection("jdbc:mysql://localhost/dbsgod","root","");stm=con.createStatement();rs=stm.executeQuery("select * from familia");while(rs.next()){dlm.addElement(rs.getString(4));}//fim while}//fim trycatch(Exceptione){JOptionPane.showMessageDialog(null,"Apresente este erro\nao desenvolvedor do sistema.","E R R O",JOptionPane.INFORMATION_MESSAGE);e.printStackTrace();}//fim catch}}
Controler (se falta ou alguma coisa e é mesmo controler):
public class ListaFamiliasC {
public ListaFamiliasC() {
}
public void atualizaLista(){
}
}
Por enquanto valew!
Ricardo
R
rickzale
Gente! Ninguém? :(Precisava de uma orientação para essas classes e ver se existe algum erro (nelas ou em mim!)