Aprendendo a criar uma interface Gráfica Java II

Na primeira postagem aprendemos como criar a página do aplicativo agora iremos implementar alguns componentes e eventos. Veja no código abaixo alguns componentes e alguns eventos:
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
public class inter extends JFrame implements ActionListener,ItemListener{
JScrollPane panelTabela;//Painel com barra de rolagem
JLabel mensagem ;//no jlabel pode ser colocado mensagens, imagens....
JTextField caixaText1,caixaText2,caixaText3,caixaSetaTexto; //JTextField é uma caixa de texto
JComboBox setaText;//é uma seta com uma lista dentro
JButton butaoAddLinha ,butaoRemoveLinha; //butao da pagina
JTable tabela;//tabela da pagina
public inter() {
setTitle("Minha Primeira GUI");//define a barra de titulo
setSize(1024,600);//define o tamanho em pixel da largura e altura
setLocation(10,10);//localiza onde irá aparecer a tela
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//fecha o formulario pra desocupar memoria
setResizable(false);//proibido redimensionar ou naum
getContentPane().setBackground(new Color(135, 206, 255));//muda a cor de fundo por codigos java
//Gerenciador de layout
getContentPane().setLayout(null);
//-----------implementando a tabela-------------//
tabela = new JTable();//inicializa a tabela
tabela.setModel(new javax.swing.table.DefaultTableModel(//modelo da tabela
new Object [][] { },
new String [] {
"Coluna 1 ","Coluna 2", "Coluna 3"
}
)
{}
);
tabela.getColumnModel().getColumn(0).setPreferredWidth(70);//tamanho da coluna
tabela.getColumnModel().getColumn(0).setResizable(false);// não pode redimensionar arrastando a coluna
tabela.getColumnModel().getColumn(1).setPreferredWidth(70);//tamanho da coluna
tabela.getColumnModel().getColumn(1).setResizable(false);
tabela.getColumnModel().getColumn(2).setPreferredWidth(70);//tamanho da coluna
tabela.getColumnModel().getColumn(2).setResizable(false);
/*-------- estilo das colunas------------------------------------------------------*/
DefaultTableCellRenderer numeros =new DefaultTableCellRenderer() {
public void setValue(Object value) {
//setBackground(new Color(238, 238, 238));//pode colocar a cor de fundo na coluna
setFont(new Font("Arial", Font.BOLD /*+ Font.ITALIC*/, 12));//pode modificar a fonte da letra
super.setValue(value);
}
};
tabela.getColumnModel().getColumn(1).setCellRenderer(numeros); //modificando o estilo da coluna 1
/*---------------------------------------------------------------------------------*/
panelTabela = new JScrollPane(tabela);//inicializa o painel colocando a tabela dentro dele
mensagem = new JLabel("Meu Primeiro Programa");//inicializa o JLabel
caixaText1 = new JTextField("coluna 1");//inicializa o JTextField
caixaText2 = new JTextField("coluna 2");
caixaText3 = new JTextField("coluna 3");
caixaSetaTexto = new JTextField();
setaText = new JComboBox ();//é uma seta com uma lista dentro
butaoAddLinha = new JButton("Adcionar a coluna");//butao para adcionar linha a coluna
butaoRemoveLinha = new JButton("Remover da coluna"); //butao para remover linha da coluna
//adicionar item a JComboBox----------------------------
setaText.addItem("Nome1");//adiciona a stringa ao JComboBox
setaText.addItem("Nome2");//adiciona a stringa ao JComboBox
setaText.addItem("Nome3");//adiciona a stringa ao JComboBox
setaText.addItem("Nome4");//adiciona a stringa ao JComboBox
//----------------------------------------------------
mensagem.setFont(new Font("Courier", Font.BOLD + Font.ITALIC, 27));//estilo da fonte do JLabel
mensagem.setForeground(new Color(255,255,255));//cor do JLabel
mensagem.setBounds(10,10,600,40); //localiza o JLabel na pagina
caixaText1.setBounds(10, 80, 200, 30);//localiza a caixa de texto na pagina
caixaText2.setBounds(250, 80, 200, 30);//localiza a caixa de texto na pagina
caixaText3.setBounds(500, 80, 200, 30);//localiza a caixa de texto na pagina
butaoAddLinha.setBounds(720, 80, 200, 30);//localiza o botao na pagina
butaoRemoveLinha.setBounds(720, 130, 200, 30);//localiza o botao na pagina
panelTabela.setBounds(10, 130, 690,300);//localiza o painel com scroll que possui a tabela
setaText.setBounds(10, 460, 200,30);
caixaSetaTexto.setBounds(10, 500, 200, 30);
getContentPane().add(mensagem); //adiciona o Jlabel na pagina
getContentPane().add(caixaText1);//adiciona a caixa de texto na pagina
getContentPane().add(caixaText2);//adiciona a caixa de texto na pagina
getContentPane().add(caixaText3);//adiciona a caixa de texto na pagina
getContentPane().add(butaoAddLinha);//adiciona o botao a pagina
getContentPane().add(butaoRemoveLinha);//aidciona o botao a pagina
getContentPane().add(panelTabela);//aidciona o painel a pagina
getContentPane().add( setaText);
getContentPane().add(caixaSetaTexto);
//todos os objetos que irão sofrer ação
butaoAddLinha.addActionListener(this);
butaoRemoveLinha.addActionListener(this);
setaText.addItemListener(this);
}
//esse metodo adciona linha a coluna pode ser chamdo quantas vezes quiser passando como parametro as strings da linha
void AddLinha(String coluna1,String coluna2,String coluna3) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)tabela.getModel();
dtm.addRow(new Object[]{coluna1,coluna2,coluna3});
}
//esse metodo remove a linha selecinada pode se criar um botão e utilizá-la
void RemoveLinha() {//GEN-FIRST:event_bDeleteActionPerformed
// TODO add your handling code here:
int[] l = tabela.getSelectedRows();
javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)tabela.getModel();
for(int i = (l.length-1); i >= 0; --i)
dtm.removeRow(l[i]);
}
public static void main(String[] args) {
inter obj = new inter();
obj.setVisible(true);
}
// esse metodo refere-se a ação que ocorre no aplicativo
public void actionPerformed(ActionEvent e) {
if(e.getSource()== butaoAddLinha){//ação de clicar no botao addlinha
String text1 = (String)caixaText1.getText();//pega o valor da caixa de texto1
String text2 = (String)caixaText2.getText();//pega o valor da caixa de texto2
String text3 = (String)caixaText3.getText();//pega o valor da caixa de texto3
AddLinha(text1,text2,text3);//chama o metodo addlinha e passa as strings da caixa de texto como parametro
}
if(e.getSource()== butaoRemoveLinha){//ação de clicar no botão removeLinha
RemoveLinha();//chama o metodo removelinha
}
}
public void itemStateChanged(ItemEvent e ) {//Ação da JComboBox
if (e.getSource() == setaText){
String Text = (String)(setaText.getSelectedItem());
caixaSetaTexto.setText(Text);
}
}
}
Nesse pequeno aplicativo encontra-se a implementação de uma JTabel, de um JButton, de uma JLabel, de um JComboBox, de um JScrollPane e de um JTextField , encontramos também alguns eventos ,o ActionListener e o ItemListener. Pode - se destacar alguns métodos como o de adicionar e o de remover linhas da tabela.
Espero que tenham gostado, aguardem mais postagens