Eventos dos botoes

Boa noite! Tenho dúvida de como faço para que quando eu clique num botão, o botao pegue um arquivo e faça com esse arquivo o que tem que fazer?
Assim: Tenho uma classe Principal que tem um botão para selecionar um arquivo qualquer do computador, esse está funcionando bem direitinho.
Mas aí tem dois botoes, um para compactar esse arquivo que eu selecionei e um para descompactar, mas não sei como faço para que quando eu pressione o botão compactar ele pegue esse arquivo selecionado anteriormente e compacte. Alguem pode por favor me ajudar!!!??? :roll:

Procura aqui no forum sobre compactador… acho que ja vi algum membro com um projeto desses prontinho!
abraços

Obrigada, mas eu já procurei e não achei, e também queria só saber como eu faço esse botão realizar a função dele. :stuck_out_tongue:

Você sabe sobre eventos?

O botão pode fazer a parte dele com um evento MouseClicked ou com um evento ActionPerformed …
É essa sua dúvida?

Não é não! Eu fiz uma classe chamada Principal , vou postar um pedaço do codigo:

public class Principal extends javax.swing.JFrame {

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new Principal().setVisible(true);
			}
		});
	}
	
	......	
	private void initGUI() {
		jLabel1 = new javax.swing.JLabel();
		jTextField1 = new javax.swing.JTextField();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();
		jButton3 = new javax.swing.JButton();
		GroupLayout layout = new GroupLayout((JComponent)getContentPane());
		getContentPane().setLayout(layout);
					
		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setResizable(false);

                                // aqui seleciona um arquivo qualquer 
		jLabel1.setText("Selecione o Arquivo:");

		jButton1.setText("Selecionar");
		jButton1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
			}
		});
                                 // aqui um botao para compactar
		jButton2.setText("Compactar");
		jButton2.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton2ActionPerformed(evt);
			}
		});
                                  // e um para descompactar
		jButton3.setText("Descompactar");
		jButton3.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton3ActionPerformed(evt);
			}
		});

	// aqui ta funcionando blz, eu clico no botão selecionar e escolho o arquivo blz.
	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
		JFileChooser fc = new JFileChooser();
		fc.setMultiSelectionEnabled(true);
		int returnVal = fc.showOpenDialog(this);

		if (returnVal == JFileChooser.APPROVE_OPTION) {
			File[] file = fc.getSelectedFiles();
			for (int i = 0 ; i < file.length; i++){
				jTextField1.setText(file[i].toString());
				//System.out.println(file[i].toString());
			}
	}

Pronto e tenho uma classe Chamada Compactar e uma chamada Descompactar que faz o trabalho de comp e descomp.
:shock: :roll:
// aqui é que não sei, como faço para esse botão pegar o arquivo que selecionei no botão anterior e fazer ele compactar?
// pior é que tem que ser paralelamente, usando threads.
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

}

Depois de muito pesquisar… acho que estou conseguindo, o problema agora é como eu passo uma thread no botão??? Tipo, estou tentando fazer isso:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
                                // não da certo com args, tenho que pegar o arquivo
                               // que selecionei no botão1 
                              // mas como faço isso?
                                 Thread[] threads = new Thread[args.length]; :?:
		String nomeArquivo;
		 :?: :?: :?:
		for (int i = 0; i < args.length; i++) {
			nomeArquivo = args[i];
			threads[i] = new Thread(new Compactador(nomeArquivo));
			threads[i].start();
		}
		for (Thread thread : threads) {
			try {
				thread.join();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println("Arquivos compactados com sucesso.");
	}

Help!