Eu fiz esse programinha que é um jar auto-executável, procurei seguir o padrão de desenvolvimento MVC, e fiz a Janela usando o Net Beans, mas coloquei os manipuladores de eventos dentro da classe "Principal" no pacote "controle". Segue o código-fonte das classes e o programa em anexo (com código-fonte). Preciso de opiniões, idéias para refinamentos... está tudo nos conformes? O padrão MVC está correto? A classe "Principal" deve mesmo fazer parte do pacote "controle"?
Grato.
[color=red]Pacote "modelo":[/color]
Classe "GeraCadastros":
package modelo;
public class GeraCadastros {
public static String geraCPF(){
String resultado="";
int i,j,soma,resto;
int numeros[]=new int[11];
for(i=0;i<9;i++)
numeros[i]=(int)(Math.random()*10);
soma=0;
for(i=0,j=10;i<9;i++,j--)
soma+=j*numeros[i];
resto=soma%11;
if(resto<2)numeros[9]=0;
else numeros[9]=11-resto;
soma=0;
for(i=0,j=11;i<10;i++,j--)
soma+=j*numeros[i];
resto=soma%11;
if(resto<2)numeros[10]=0;
else numeros[10]=11-resto;
for(i=0,j=0;i<numeros.length+3;i++){
if(i!=3 && i!=7 && i!=11){
resultado+=numeros[j];
j++;
}
if(i==3 || i==7)resultado+='.';
if(i==11)resultado+='-';
}
return resultado;
}
public static String geraCNPJ(){
String resultado="";
int i,j,soma,resto;
int numeros[]=new int[14];
for(i=0;i<12;i++)
numeros[i]=(int)(Math.random()*10);
soma=0;
for(i=0,j=5;i<12;i++,j--){
soma+=j*numeros[i];
if(j==2)j=10;
}
resto=soma%11;
if(resto><2)numeros[12]=0;
else numeros[12]=11-resto;
soma=0;
for(i=0,j=6;i<13;i++,j--){
soma+=j*numeros[i];
if(j==2)j=10;
}
resto=soma%11;
if(resto<2)numeros[13]=0;
else numeros[13]=11-resto;
for(i=0,j=0;i<numeros.length+4;i++){
if(i!=2 && i!=6 && i!=10 && i!=15){
resultado+=numeros[j];
j++;
}
if(i==2 || i==6)resultado+='.';
if(i==10)resultado+='/';
if(i==15)resultado+='-';
}
return resultado;
}
}
[color=red]Pacote "visao":[/color]
Classe "Janela":
/*
* Janela.java
*
* Created on 18 de Julho de 2005, 20:26
*/
package visao;
import javax.swing.*;
/**
*
* @author Fox McCloud
*/
public class Janela extends JFrame {
/** Creates new form Janela */
public Janela() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// ><editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
rotuloCPF = new JLabel();
rotuloCNPJ = new JLabel();
caixaCPF = new JTextArea();
caixaCNPJ = new JTextArea();
botaoCPF = new JButton();
botaoCNPJ = new JButton();
botaoLimpa = new JButton();
getContentPane().setLayout(new java.awt.GridBagLayout());
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("gera CPF CNPJ");
setResizable(false);
rotuloCPF.setText("CPF");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
getContentPane().add(rotuloCPF, gridBagConstraints);
rotuloCNPJ.setText("CNPJ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
getContentPane().add(rotuloCNPJ, gridBagConstraints);
caixaCPF.setEditable(false);
caixaCPF.setPreferredSize(new java.awt.Dimension(150, 18));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
getContentPane().add(caixaCPF, gridBagConstraints);
caixaCNPJ.setEditable(false);
caixaCNPJ.setPreferredSize(new java.awt.Dimension(150, 18));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
getContentPane().add(caixaCNPJ, gridBagConstraints);
botaoCPF.setText("Gera CPF");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
getContentPane().add(botaoCPF, gridBagConstraints);
botaoCNPJ.setText("Gera CNPJ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
getContentPane().add(botaoCNPJ, gridBagConstraints);
botaoLimpa.setText("Limpa");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
getContentPane().add(botaoLimpa, gridBagConstraints);
pack();
}
// </editor-fold>//GEN-END:initComponents
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Janela().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private JButton botaoCNPJ;
private JButton botaoCPF;
private JButton botaoLimpa;
private JTextArea caixaCNPJ;
private JTextArea caixaCPF;
private JLabel rotuloCNPJ;
private JLabel rotuloCPF;
// End of variables declaration//GEN-END:variables
public void mostraCPF(String cpf){
caixaCPF.setText(cpf);
}
public void mostraCNPJ(String cnpj){
caixaCNPJ.setText(cnpj);
}
public JButton getBotaoCPF(){
return botaoCPF;
}
public JButton getBotaoCNPJ(){
return botaoCNPJ;
}
public JButton getBotaoLimpa(){
return botaoLimpa;
}
}
[color=red]Pacote "controle":[/color]
Classe "Principal" (Main-Class no MANIFEST.MF):
package controle;
import javax.swing.*;
import java.awt.event.*;
import visao.*;
import modelo.*;
public class Principal {
private Janela janela;
public Principal(){
janela=new Janela();
JButton botaoCPF=janela.getBotaoCPF();
JButton botaoCNPJ=janela.getBotaoCNPJ();
JButton botaoLimpa=janela.getBotaoLimpa();
botaoCPF.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
botaoCPFMouseClicked(evt);
}
});
botaoCNPJ.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
botaoCNPJMouseClicked(evt);
}
});
botaoLimpa.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
botaoLimpaMouseClicked(evt);
}
});
janela.pack();
janela.setVisible(true);
}
private void botaoCPFMouseClicked(MouseEvent evt) {//GEN-FIRST:event_botaoCPFMouseClicked
janela.mostraCPF(GeraCadastros.geraCPF());
}//GEN-LAST:event_botaoCPFMouseClicked
private void botaoCNPJMouseClicked(MouseEvent evt) {//GEN-FIRST:event_botaoCNPJMouseClicked
janela.mostraCNPJ(GeraCadastros.geraCNPJ());
}//GEN-LAST:event_botaoCNPJMouseClicked
private void botaoLimpaMouseClicked(MouseEvent evt) {//GEN-FIRST:event_botaoLimpaMouseClicked
janela.mostraCPF("");
janela.mostraCNPJ("");
}//GEN-LAST:event_botaoLimpaMouseClicked
public static void main(String args[]){
Principal principal=new Principal();
}
}
hehe