Mas é claro, com prazer. Ele so esta feio, mas acho q da pra entender! 
Peguei como base as explicações do algoritmo gerador de cpf emhttp://www.geradorcpf.com/algoritmo_do_cpf.htm
e do cnpj em http://www.geradorcnpj.com/algoritmo_do_cnpj.htm
Segue a classe que gera o CPF
[code]
public class GeradorCPF {
public String geraCPF() throws Exception{
int digito1 = 0, digito2 = 0, resto = 0;
String nDigResult;
String numerosContatenados;
String numeroGerado;
Random numeroAleatorio = new Random();
//numeros gerados
int n1 = numeroAleatorio.nextInt(10);
int n2 = numeroAleatorio.nextInt(10);
int n3 = numeroAleatorio.nextInt(10);
int n4 = numeroAleatorio.nextInt(10);
int n5 = numeroAleatorio.nextInt(10);
int n6 = numeroAleatorio.nextInt(10);
int n7 = numeroAleatorio.nextInt(10);
int n8 = numeroAleatorio.nextInt(10);
int n9 = numeroAleatorio.nextInt(10);
int soma = n9*2 + n8*3 + n7*4 + n6*5 + n5*6 + n4*7 + n3*8 + n2*9 + n1*10;
int valor = (soma / 11)*11;
digito1 = soma-valor;
//Primeiro resto da divisão por 11.
resto = (digito1 % 11);
if(digito1 < 2){
digito1 = 0;
}
else {
digito1 = 11-resto;
}
int soma2 = digito1 * 2 + n9*3 + n8*4 + n7*5 + n6*6 + n5*7 + n4*8 + n3*9 + n2*10 + n1*11;
int valor2 = (soma2 / 11)*11;
digito2 = soma2-valor2;
//Primeiro resto da divisão por 11.
resto = (digito2 % 11);
if(digito2 < 2){
digito2 = 0;
}
else {
digito2 = 11-resto;
}
//Conctenando os numeros
numerosContatenados = String.valueOf(n1) + String.valueOf(n2) + String.valueOf(n3) +"." + String.valueOf(n4) +
String.valueOf(n5) + String.valueOf(n6) +"."+ String.valueOf(n7) +String.valueOf(n8) +
String.valueOf(n9)+"-";
//Concatenando o primeiro resto com o segundo.
nDigResult = String.valueOf(digito1) + String.valueOf(digito2);
numeroGerado = numerosContatenados+nDigResult;
System.out.println("CPF Gerado " + numeroGerado);
return numeroGerado;
}//fim do metodo geraCPF
public String mostraResultado() throws Exception{
String resultadoCPF = geraCPF();
return resultadoCPF;
}
}//fim da classe[/code]
Segue a classe que gera o CNPJ
[code]
public class GeradorCnpj {
public String geraCNPJ() throws Exception {
int digito1 = 0, digito2 = 0, resto = 0;
String nDigResult;
String numerosContatenados;
String numeroGerado;
Random numeroAleatorio = new Random();
//numeros gerados
int n1 = numeroAleatorio.nextInt(10);
int n2 = numeroAleatorio.nextInt(10);
int n3 = numeroAleatorio.nextInt(10);
int n4 = numeroAleatorio.nextInt(10);
int n5 = numeroAleatorio.nextInt(10);
int n6 = numeroAleatorio.nextInt(10);
int n7 = numeroAleatorio.nextInt(10);
int n8 = numeroAleatorio.nextInt(10);
int n9 = numeroAleatorio.nextInt(10);
int n10 = numeroAleatorio.nextInt(10);
int n11 = numeroAleatorio.nextInt(10);
int n12 = numeroAleatorio.nextInt(10);
int soma = n12*2 + n11*3 + n10*4 + n9*5 + n8*6 + n7*7 + n6*8 + n5*9 + n4*2 + n3*3 + n2*4 + n1*5;
int valor = (soma / 11)*11;
digito1 = soma-valor;
//Primeiro resto da divisão por 11.
resto = (digito1 % 11);
if(digito1 < 2){
digito1 = 0;
}
else {
digito1 = 11-resto;
}
int soma2 = digito1*2 + n12*3 + n11*4 + n10*5 + n9*6 + n8*7 + n7*8 + n6*9 + n5*2 + n4*3 + n3*4 + n2*5 + n1*6 ;
int valor2 = (soma2 / 11)*11;
digito2 = soma2-valor2;
//Primeiro resto da divisão por 11.
resto = (digito2 % 11);
if(digito2 < 2){
digito2 = 0;
}
else {
digito2 = 11-resto;
}
//Conctenando os numeros
numerosContatenados = String.valueOf(n1) + String.valueOf(n2) +"."+ String.valueOf(n3) + String.valueOf(n4) +
String.valueOf(n5) +"."+ String.valueOf(n6) + String.valueOf(n7) +String.valueOf(n8)+"/"+
String.valueOf(n9) + String.valueOf(n10) + String.valueOf(n11) +
String.valueOf(n12)+"-";
//Concatenando o primeiro resto com o segundo.
nDigResult = String.valueOf(digito1) + String.valueOf(digito2);
numeroGerado = numerosContatenados+nDigResult;
System.out.println("Digito 2 ->"+digito2);
System.out.println("CNPJ Gerado " + numeroGerado);
return numeroGerado;
}
public String mostraResultado() throws Exception{
String resultadoCNPJ = geraCNPJ();
return resultadoCNPJ;
}
}[/code]
Segue a classe que gera o RG.
Eu li sobre o RG e vi que ele nao tem uma regra, nem digitos validadores como o CPF e CNPJ, entao o que a classe faz e simplemente gerar um numero de 9 digitos qualquer.
(P/favor me corrijam se eu estiver errado)
[code]
public class GeradorRg {
public String gerarRg() throws Exception{
String nDigResult;
String numerosContatenados;
String numeroGerado;
Random numeroAleatorio = new Random();
//numeros gerados
int n1 = numeroAleatorio.nextInt(10);
int n2 = numeroAleatorio.nextInt(10);
int n3 = numeroAleatorio.nextInt(10);
int n4 = numeroAleatorio.nextInt(10);
int n5 = numeroAleatorio.nextInt(10);
int n6 = numeroAleatorio.nextInt(10);
int n7 = numeroAleatorio.nextInt(10);
int n8 = numeroAleatorio.nextInt(10);
int n9 = numeroAleatorio.nextInt(10);
//Conctenando os numeros
numerosContatenados = String.valueOf(n1) + String.valueOf(n2) + String.valueOf(n3) + String.valueOf(n4) +
String.valueOf(n5) + String.valueOf(n6) + String.valueOf(n7) +String.valueOf(n8) +
String.valueOf(n9);
numeroGerado = numerosContatenados;
return numeroGerado;
}
public String mostraResultado() throws Exception{
String resultadoRG = gerarRg();
return resultadoRG;
}
}[/code]
Por ultimo nosso formulario que vai chamar nossos metodos geradores de CPF, CNPJ e RG.
import br.com.softwaremadeinbrazil.controller.GeradorCPF;
import br.com.softwaremadeinbrazil.controller.GeradorCnpj;
import br.com.softwaremadeinbrazil.controller.GeradorRg;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author sergio
*/
public class FormPrincipal extends javax.swing.JFrame {
/** Creates new form FormPrincipal */
public FormPrincipal() {
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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
btnGerarCpf = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
txtCpf = new javax.swing.JTextField();
btnGerarCNPJ = new javax.swing.JButton();
btnGerarRG = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
txtCNPJ = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
txtRG = new javax.swing.JTextField();
btnSair = new javax.swing.JButton();
btnLimpar = new javax.swing.JButton();
jLabel8 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Gerador de CPF, CNPJ e RG para testes de Software.");
setResizable(false);
btnGerarCpf.setText("Gerar CPF");
btnGerarCpf.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnGerarCpfActionPerformed(evt);
}
});
jLabel1.setText("CPF :");
txtCpf.setEditable(false);
btnGerarCNPJ.setText("Gerar CNPJ");
btnGerarCNPJ.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnGerarCNPJActionPerformed(evt);
}
});
btnGerarRG.setText("Gerar RG");
btnGerarRG.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnGerarRGActionPerformed(evt);
}
});
jLabel3.setText("CNPJ :");
txtCNPJ.setEditable(false);
jLabel4.setText("RG:");
txtRG.setEditable(false);
btnSair.setText("Sair");
btnSair.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSairActionPerformed(evt);
}
});
btnLimpar.setText("Limpar");
btnLimpar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLimparActionPerformed(evt);
}
});
jLabel8.setFont(new java.awt.Font("DejaVu Sans", 0, 9)); // NOI18N
jLabel8.setText("Desenvolvido para ser usado por programadores ou estudantes em seus testes de software.");
jLabel6.setFont(new java.awt.Font("Tahoma", 0, 9));
jLabel6.setText("Para ser mais prático use o Ctrl+C , Ctrl+V");
jLabel7.setText("www.softwaremadeinbrazil.com.br");
jLabel2.setText("*Números de RG não seguem fórmula ou seguência lógica");
jLabel5.setText(" portanto, os números gerados podem não ser validados");
jLabel9.setText(" corretamente.");
jLabel10.setText("*");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(85, 85, 85)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel3)
.addGap(4, 4, 4))
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(txtRG, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtCNPJ, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtCpf, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel8))
.addGroup(layout.createSequentialGroup()
.addGap(53, 53, 53)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
.addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)))
.addGroup(layout.createSequentialGroup()
.addGap(110, 110, 110)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(btnSair, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(btnGerarRG, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnGerarCpf))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(btnLimpar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnGerarCNPJ, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addGroup(layout.createSequentialGroup()
.addGap(109, 109, 109)
.addComponent(jLabel7)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(26, 26, 26)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtCpf, javax.swing.GroupLayout.DEFAULT_SIZE, 24, Short.MAX_VALUE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtCNPJ, javax.swing.GroupLayout.DEFAULT_SIZE, 24, Short.MAX_VALUE)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtRG, javax.swing.GroupLayout.DEFAULT_SIZE, 24, Short.MAX_VALUE)
.addComponent(jLabel4)
.addComponent(jLabel10))
.addGap(33, 33, 33)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(btnGerarCNPJ)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnLimpar))
.addGroup(layout.createSequentialGroup()
.addComponent(btnGerarCpf)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnGerarRG)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnSair, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5)
.addGap(4, 4, 4)
.addComponent(jLabel9)
.addGap(11, 11, 11)
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 12, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel7))
);
pack();
}// </editor-fold>
private void btnGerarCpfActionPerformed(java.awt.event.ActionEvent evt) {
GeradorCPF geradorCPF = new GeradorCPF();
try {
txtCpf.setText(geradorCPF.mostraResultado());
} catch (Exception ex) {
ex.getMessage();
ex.getStackTrace();
}
}
private void btnGerarCNPJActionPerformed(java.awt.event.ActionEvent evt) {
GeradorCnpj geradorCnpj = new GeradorCnpj();
try {
txtCNPJ.setText(geradorCnpj.geraCNPJ());
} catch (Exception ex) {
Logger.getLogger(FormPrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnGerarRGActionPerformed(java.awt.event.ActionEvent evt) {
GeradorRg geradorRg = new GeradorRg();
try {
txtRG.setText(geradorRg.gerarRg());
} catch (Exception ex) {
Logger.getLogger(FormPrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnSairActionPerformed(java.awt.event.ActionEvent evt) {
/* int opcao = JOptionPane.showConfirmDialog(null, "Tem certeza que deseja sair do programa ?","Atenção",
JOptionPane.YES_NO_OPTION);
if(opcao == JOptionPane.YES_OPTION){
System.exit(0);
} */
Object[] options = { "Sim", "Não"};
int resultado = JOptionPane.showOptionDialog(null, "Deseja sair do programa ?","ATENÇÂO ", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,null, options,options[0]);
if(resultado == 0){
dispose();
}
}
private void btnLimparActionPerformed(java.awt.event.ActionEvent evt) {
txtCNPJ.setText("");
txtCpf.setText("");
txtRG.setText("");
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormPrincipal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnGerarCNPJ;
private javax.swing.JButton btnGerarCpf;
private javax.swing.JButton btnGerarRG;
private javax.swing.JButton btnLimpar;
private javax.swing.JButton btnSair;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JTextField txtCNPJ;
private javax.swing.JTextField txtCpf;
private javax.swing.JTextField txtRG;
// End of variables declaration
}
Fiz todo o programa no Netbeans 6.8
Espero q alguem tenha gostado!