Dificuldade de usar código de uma classe em outra

Olá pessoal, é o seguinte eu tenho minha classe janela, já pronta com um botão, que ao clicar nele sorteia-se uma pessoa, este processo para sortear está em outra classe. Também não consegui aprendi a usar o ArrayList, o que eu quero fazer é o seguinte: criar um sistema de sorteio, onde eu adiciono nomes de pe no arraylist, dai ao clicar no botão sortear, ele sorteia um dessas peessoa… ah e essas pessoas tem que ser guardadas em arquivo
Então tenho essa dificuldade, de ao clicar no botão fazer algo vou cologar o código abaixo:

[code]import java.util.ArrayList;
import java.awt.event.;
import java.awt.
;
import javax.swing.*;

public class Janela extends JFrame implements ActionListener{
ArrayList pessoas;
private JButton b1;
private final Container container;
private JLabel l1;
private JMenuBar m1;
JMenu menuCadastro, menuConfig, menuRelat, menuSair;
JMenuItem miPessoaj, miPergunta, miAltLogo, miAltNomeEvento, miGanhador, miQntosGanharam;

public Janela(){
setTitle(“Sorteio”);
setSize(800,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));

container = getContentPane();

b1 = new JButton("Sortear");
m1 = new JMenuBar();
menuCadastro= new JMenu ("Cadastrar");
menuConfig = new JMenu ("Configurações");
menuRelat = new JMenu ("Relatórios");
miPessoaj = new JMenuItem ("Cadastrar Pessoa");
miPessoaj.addActionListener(this);
miPergunta = new JMenuItem ("Cadastrar Pergunta");
miPessoaj.addActionListener(this);
menuCadastro.add(miPessoaj);
menuCadastro.add(miPergunta);
miAltLogo = new JMenuItem ("Alterar Logo");
miAltLogo.addActionListener(this);
miAltNomeEvento = new JMenuItem ("Alterar nome do evento");
miAltNomeEvento.addActionListener(this);
menuConfig.add(miAltLogo);
menuConfig.add(miAltNomeEvento);
miGanhador = new JMenuItem("Mostrar vencedores");
miGanhador.addActionListener(this);
miQntosGanharam = new JMenuItem("Mostrar quantos já ganharam");
menuRelat.add(miGanhador);
menuRelat.add(miQntosGanharam);
menuSair = new JMenu("Sair");

m1.add(menuCadastro);
m1.add(menuConfig);
m1.add(menuRelat);
m1.add(menuSair);
setJMenuBar(m1);


getContentPane().add(b1);

setVisible(true);

}

public void actionPerformed(ActionEvent e)
{
if (e.getSource()==miPessoaj){
String resp=JOptionPane.showInputDialog(null,“Qual o seu nome?”,“Login no sistema”,JOptionPane.QUESTION_MESSAGE);
}
if (e.getSource()==miPergunta)
l1.setText(“Escolhido o item Perguntas”);
if (e.getSource()==miAltLogo)
l1.setText(“Escolhido o item Alterar Logo”);
if (e.getSource()==miAltNomeEvento)
l1.setText(“Escolhido o item Alterar Nome do Evento”);
if (e.getSource()==miGanhador)
l1.setText(“Escolhido o item Ganhador”);
if (e.getSource()==miQntosGanharam)
l1.setText(“Escolhido o item Quantos Ganharam”);
if (e.getSource()==menuSair)
System.exit(0);
}
}
[/code]

aqui agora a classe Pessoa

public class Pessoa extends Janela {
    private String nome;
    private int idade;
    private String curso;
    
    public void  Pessoa(String n, int i, String c){
        nome = n;
        idade = i;
        curso = c;
    }
    
    public String getNome(){
        return nome;
    }
    
    public int getIdade(){
        return idade;
    }
    
    public String getCurso(){
        return curso;
    }   
}

Classe sorteio:

import java.io.FileOutputStream;
import java.util.Random;
import javax.swing.JOptionPane;

/**
 *
 * @author Cokda
 */
public class Sorteio {

    private String Nomesorteio;
    private String Nomepremio;
    private int ValorPremio;
    
    public void Sorteio (String ns, String np, int v){
        Nomesorteio = ns;
        Nomepremio = np;
        ValorPremio = v;           
    }

    public void Sorteia (){
        
        Random random = new Random();
        random.nextInt();

    }

    public void teste(){

    }

    public int PremioDinheiro (int x){
      x =(Integer.parseInt(JOptionPane.showInputDialog("Insira o valor do premio:")));
      return x;
    }

    public String Premio (String x){
        JOptionPane.showInputDialog("Informe o prêmio deste sorteio:");
        return x;
    }

    public String Evento (String x){
        JOptionPane.showInputDialog("Informe o nome deste evento para o sorteio sorteio:");
        return x;
    }

}

Classe cadastro

[code]
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
*@author Cokda
*/
public class Cadastro implements Serializable {//Salvar uma nova pessoa em arquivo

private ArrayList<Pessoa> pessoas;

public Cadastro() {
    pessoas = new ArrayList<Pessoa>();
}


public void salvaArquivo(Cadastro pessoas) {
    try {
        ObjectOutputStream arquivo = new ObjectOutputStream(new FileOutputStream("cadastro.ser"));

        arquivo.writeObject(pessoas); // salva a referência pessoa no arquivo
        arquivo.close(); // fecha o arquivo para não ter problemas futuramente

    } catch (Exception ex) {
        Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
    }
}
/**
 * Função para carregar as referências dos objetos, atraves de um retorno de um arraylist com eles
 * @return ArrayList
 */

public ArrayList carregaARquivo() {//Carregar as referencias dos objetos (arquivo salvo)
    ArrayList x = new ArrayList();
    try {
        ObjectInputStream arquivo = new ObjectInputStream(new FileInputStream("cadastro.ser"));  //deserealiza o objeto

        x.add(arquivo.readObject()); // Salva em um arraylist o primeiro objeto que esta no arquivo
    } catch (Exception ex) {
        Logger.getLogger(Cadastro.class.getName()).log(Level.SEVERE, null, ex);
    }
    return x;  // retorna o arraylist com os objetos
}

}[/code]

e a main:

[code]
public class Main {

public static void main(String[] args) {

    Janela j   = new Janela();
}

}[/code]

Para que seu botão faça algo, é necessário colocar ele para escutar um evento. Nesse caso você adicionará um ActionListener nele. Dá uma pesquisada sobre isso no Google que provavelmente você achará vários exemplos.

Abraços

Tente colocar o trecho de código abaixo dentro do construtor da classe Janela:


public Janela() {
//seu código anterior estará acima
setVisible(true);	 

            //adicione as linhas abaixo ( após o setVisible(true)
		b1.addActionListener(new java.awt.event.ActionListener() {
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		        b1ActionPerformed(evt);
		    }
		});
		
	}

Fora do construtor, adicione o método abaixo:

private void b1ActionPerformed(java.awt.event.ActionEvent evt) {		
               JOptionPane.showMessageDialog(null, "Você clicou no botão "+b1.getText());

	}

Agora quando você clicar no botão,ele irá responder com uma telinha com uma mensagem.
Acertando essa parte, o resto ficará mais fácil, pois você poderá adicionar a operação do sorteio.

Qualquer coisa, estamos aqui.

valeu… mas acho q essa minha classe Sorteio não está correta…
vou dar uma revisada, pq qndo clico no botão sorteio, nao faz nada!

Pelo que vi no código abaixo :

//    public int sorteia(){
    public void Sorteia() {

		Random random = new Random();
		random.nextInt();

	}

Ou seja, você chama o metodo sorteio, ele gera um valor e esse valor é perdido.
O que você pode fazer, é mudar o retorno para int e a partir daí você usa esse número para buscar uma posição
do vetor ou a lista de pessoas.

Por exemplo:

p=new ("JOAO"); p1=new ("Pedro"); p2=new ("Thiago");
Aí vc joga essas instancias dentro de alguma estrutura de dados (vetor, lista etc) e ao chamar o método sorteia, você
pode acessar diretamente a posição dessa estrrutura de dados que seu ojbeto estará disponível.

suaLista={p1,p2,p3} Sorteio s = new Sorteio(); System.out.println(suaLista[s.sorteio]);

Os códigos acima não irão compilar, eles apenas ilustram a ideia.