Caso de Uso:
Tínhamos que buscar alguns dados de tabelas diferentes para utilizarmos em nosso aplicativo.
Para isso, fizemos um barramento SOA (que não vou postar por motivo de sigilo da empresa...) e conectamos este cliente a ele.
Problemas resolvidos com este código:
Swing: Utilização de tabelas dentro de abas, sem a utilização de containers.
Popular tabelas com array bidimensional de strings
SOA: Transportar strings entre o barramento e o Cliente.
-----------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class Unitizacao implements ActionListener{
JFrame tela = new JFrame();
JTextField TfOdex;
JTable tbData1, tbData2, tbData3, tbData4, tbData5;
JTextArea area6 = new JTextArea();
public static void main(String args[]){
// Cria o Objeto para tirar o swing de um método static
Unitizacao u = new Unitizacao();
u.run();
}
public void run(){
// Tenta utilizar uma biblioteca de aparencia para o Swing
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
}catch(Exception e){
area6.setText(e.getMessage());
}
// Layout null para posicionamento manual dos itens
tela.setLayout(null);
// INÍCIO GRUPO DE OBJETOS DO CABEÇALHO
// Objeto do texto Odex
JLabel LbOdex = new JLabel("ODEX");
// Objeto Font para ajustar o tipo, estilo e tamanho da fonte
Font t = new Font("Arial", Font.BOLD, 20);
// Atribuindo o Objeto Font ao Objeto do texto Odex
LbOdex.setFont(t);
// ajustar posição do elemento no JPanel: (coluna, linha, largura, altura)
LbOdex.setBounds(10, 40, 60, 30);
// Objeto da caixa de diálogo
TfOdex = new JTextField("");
// ajustar posição do elemento no JPanel: (coluna, linha, largura, altura)
TfOdex.setBounds(80, 40, 370, 30);
// Objeto do botão Consultar
JButton consulta = new JButton("Consultar");
consulta.setBounds(480, 40, 120, 30);
// Adiciona o listner ao Botão
consulta.addActionListener(this);
// Determina o comando que o listener recebe ao clicar no Botão
consulta.setActionCommand("consultar");
// Objeto do botão Sair
JButton sair = new JButton("Sair");
sair.setBounds(630, 40, 120, 30);
sair.addActionListener(this);
sair.setActionCommand("sair");
// FIM DO GRUPO DE OBJETOS DO CABEÇALHO
// INÍCIO DO GRUPO DE OBJETOS DE ABAS
// Cria o Objeto do conjunto de Abas
JTabbedPane tabelaDePaineis = new JTabbedPane(JTabbedPane.TOP);
tabelaDePaineis.setBounds(0, 100, 800, 500);
// ABA 1
// Objeto da Aba 1
JPanel painel01 = new JPanel(null);
// Objeto da Tabela
tbData1 = new JTable();
tbData1.setBounds(5,5,685,360);
tbData1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// Crio o objeto do Scroll e coloco a tabela dentro dele.
JScrollPane sc = new JScrollPane(tbData1);
sc.setBounds(5,5,780,430);
// Indica que a scroll bar vertical é necessária
sc.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
// Indica que a scroll bar horizontal é necessária
sc.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
// Adiciona a Scroll (com a tabela dentro) no objeto da primeira aba.
painel01.add(sc);
// ABA 2
JPanel painel02 = new JPanel(null);
tbData2 = new JTable();
tbData2.setBounds(5,5,685,360);
tbData2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane sc2 = new JScrollPane(tbData2);
sc2.setBounds(5,5,780,430);
sc2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
sc2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
painel02.add(sc2);
// ABA 3
JPanel painel03 = new JPanel(null);
tbData3 = new JTable();
tbData3.setBounds(5,5,685,360);
tbData3.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane sc3 = new JScrollPane(tbData3);
sc3.setBounds(5,5,780,430);
sc3.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
sc3.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
painel03.add(sc3);
// ABA 4
JPanel painel04 = new JPanel(null);
tbData4 = new JTable();
tbData4.setBounds(5,5,685,360);
tbData4.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane sc4 = new JScrollPane(tbData4);
sc4.setBounds(5,5,780,430);
sc4.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
sc4.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
painel04.add(sc4);
// ABA 5
JPanel painel05 = new JPanel(null);
tbData5 = new JTable();
tbData5.setBounds(5,5,685,360);
tbData5.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane sc5 = new JScrollPane(tbData5);
sc5.setBounds(5,5,780,430);
sc5.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
sc5.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
painel05.add(sc5);
// ABA 6 - LOG
JPanel painel06 = new JPanel(null);
area6.setBounds(5,5,685,360);
JScrollPane sc6 = new JScrollPane(area6);
sc6.setBounds(5,5,780,430);
sc6.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
sc6.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
painel06.add(sc6);
// adiciona as abas no objeto de abas
tabelaDePaineis.addTab("Informações",painel01);
tabelaDePaineis.addTab("Detalhes",painel02);
tabelaDePaineis.addTab("MaterialUC",painel03);
tabelaDePaineis.addTab("MaterialCOM",painel04);
tabelaDePaineis.addTab("Serviços",painel05);
tabelaDePaineis.addTab("Log",painel06);
// ADICIONANDO OS OBJETOS AO FRAME
tela.add(LbOdex);
tela.add(TfOdex);
tela.add(consulta);
tela.add(sair);
tela.add(tabelaDePaineis);
// SETANDO DETALHES DO FRAME
tela.setTitle("Unitização");
tela.setSize(800, 600);
tela.setBounds(100,100, 800, 600);
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tela.setResizable(false);
tela.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("consultar")){
String[][] resposta = null;
// chama o método de conexão, passando o método que será invocado.
resposta = conecta("Informacoes");
// ajusta a tabela com o array retornado pela conexão.
tbData1.setModel(new DefaultTableModel(resposta, new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13"}));
resposta = conecta("Detalhes");
tbData2.setModel(new DefaultTableModel(resposta, new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13"}));
resposta = conecta("MaterialUC");
tbData3.setModel(new DefaultTableModel(resposta, new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13"}));
resposta = conecta("MaterialCOM");
tbData4.setModel(new DefaultTableModel(resposta, new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13"}));
resposta = conecta("Servicos");
tbData5.setModel(new DefaultTableModel(resposta, new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13"}));
}
if(e.getActionCommand().equals("sair")){
System.exit(0);
}
}
public String[][] conecta(String operacao){
String[][] resposta = null;
Service service = new Service();
Call call;
String odex = TfOdex.getText();
try {
call = (Call) service.createCall();
// Atribuindo a URL do Servico
// Importante: é necessário um serviço SOA para conexão
call.setTargetEndpointAddress(new java.net.URL("<<INSERIR AQUI A URL DO BARRAMENTO SOA IMPLEMENTADO>>"));
// Definindo o metodo a ser invocado
call.setOperationName(operacao);
// Definindo os parametros de entrada
call.addParameter("odex", XMLType.XSD_STRING, ParameterMode.IN);
// Definindo o tipo do parametro de retorno
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_ARRAY);
// Invocando o servico
resposta = (String[][]) call.invoke(new Object[] {odex});
} catch (Exception ex) {
String a = "Serviço "+operacao+" "+ex.getMessage();
area6.setText(a);
}
return resposta;
}
}
Nenhum comentário:
Postar um comentário