Fala cara, blza?
Então, quando se trabalha com GUIs, vc vai trabalhar tbm com eventos.
Cada coisa que vc faça numa JFrame, gera um evento.
Ex: Quando vc aperta um botão, gera uma ActionEvent. Quando você pressiona o botão direito do mouse, gera um MouseEvent. Quando você clica no 'x' do JFrame, gera um WindowEvent, ou seja, tudo o que vc faça gera um objeto Event.
Só que para fazer funcionar, vc precisa implementar uma interface correspondente.
Ex: Se você quer clicar no 'x' do JFrame e antes de fechar a tela, informar uma pergunta ao usuário do tipo "Deseja sair?", vc precisa implementar um WindowListener. Isso significa que vc precisa fazer com que sua classe (ou alguma outra classe) implemente WindowListener. Mas não pense nessa interface por hora, pesquise mais sobre ActionListener.
Quando vc implementa essa interface (ActionListener), vc precisa declarar um método dentro da sua classe, chamado actionPerformed().
Isso significa que todas as ações que vc QUIZER que gerem eventos, entrarão neste método. Eu disse QUIZER pois quando vc cria um componete, um JButton por exemplo, ele não faz nada, só fará se vc adicionar este botão a uma "lista de escuta de eventos". Isso será feito pelo método addActionListener() chamado pelo JButton que vc desejar.
import javax.swing.*;
import java.awt.event.*;
public class MinhaJanela implements ActionListener
{
// Constructor
public MinhaJanela()
{
// Cria o objeto janela e define o titulo da janela
JFrame Janela = new JFrame("Minha janela em JAVA");
//Cria o botão
JButton botao = new JButton("Click");
//Adiciona o botao na janela
Janela.add(botao);
//Aqui vc indica que vc QUER saber quando um usuário clicar NESTE botão
botao.addActionListener(this);
// Procedimento padrão ao clicar no X da janela
Janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Cria a janela (Na verdade não sei ao certo oq é o pack())
Janela.pack(); // Alinha a janela ao centro da tela
Janela.setLocationRelativeTo(null);
// Define a janela como visivel
Janela.setVisible(true);
}
public void actionPerformed(ActionEvent evt){
JOptionPane.showMessageDialog(null,"Hello Word");
}
// Inicio do programa
public static void main(String[] argsv)
{
new MinhaJanela();
}
}
Quando vc usa o pack(), não precisa usar o setSize(), pois o pack() trará uma janela de acordo com os componetes que estão inseridos nela, ele vai dimensionando para o mínimo possível. Faça um teste e adicione outro componentes, JLabel, JText entre outros.
No método addActionListener() eu passei uma palavra reservada, a
this. Esse método precisa saber o seguinte: "Qual é a classe que implementa a interface ActionListener?". O
this informa: "Ai método addActionListener(), a classe que implementa esta interface sou eu mesma!!!". Deve ter ficado meio confuso, mas de mais algumas pesquisadas sobre "referência
this.
Resumindo, quando vc adiciona um componente ao addActionListener(), quando o usuário clicar em um destes componentes, chamará automaticamente o método actionPerformed(). Aí, dentro desse método fica por sua conta o que fazer.
Qualquer dúvida posta ai ok?
Abraço