guj - introdução a programação gráfica em java com swing

13
GU J Notícias, artigos e o maior fórum brasileiro sobre Java home fórum notícias tópicos recentes empregos artigos  Bem vindo ao GUJ. Crie seu login, ou digite-o para logar no site. Usuário: Senha: Introdução a programação gráfica em Java com Swing em 28/04/2003 , por Rafael Steil Introdução a programação gráfica em Java com Swing  Neste artigo vamos ver como criar a plicações gráfi cas em Java, mais precisamente usando um Framework ( conjunto de classes ) chamado Swing. Veremos três exemplos, começando com um simpl es programa que apenas e screve uma mensag em na tela, passando para um programa que já trabalha com caixas de texto e botões, e por final veremos como trabalhar com lis tas. Há ainda uma seção especialmente sobre gerenciamento de layout, os chamados "Layout Managers", item mui to importante quant o se tra ta de program ação GU I.  Não é necessário que você tenha alguma experiência anterior em programação gráfica com Java, porém um minimo de conhecimento da tecnologia ajudaria, apesar de não ser im prensindí vel, uma vez que é basta nte c omum as pessoas terem o primeiro contato com Java através de programação gráfica. Conhecimentos de lóg ica de programação são nec essários , mesmo que seja apenas uma base. P ara dig itar os program as você pode usar qualquer editor de t extos ou código de sua preferência, t ais como Notedad, Ul traEdit, VI, Emacs, KWrite e assim por diante. Programas em Java ne cessitam do JDK para serem desenvolvidos e, uma vez compilados , apena s a JRE fa z-se ncessário. O JDK , por já ser um ambiente completo de desenvolvimento, já trás uma versão da JRE, porta nto você não precisa ter os dois pacotes instalados na mesm a máquina. Se você nunca mexeu com Java ou não tem ( ou não sabe como instalar ) o JDK, dê uma lida nos tutoriais "Instalando e configurando o JDK no Linux" ( ou "Instalando e config urando o JDK no Windows" caso seja usuário de Window s ), " Classpath, ente ndendo o que é e para que serve", "Sopa de letrinhas sabor Java" e "Os erros e dúvidas de um iniciante", disponíveis no site do GUJ seção "Artigos" e "Tutoriais". Conhecendo o Swing  Nas primeiras versões do Java a única forma de fazer programas gráficos era através da AWT , uma biblioteca de  baixo-nível que dependia de código nativo da plataforma onde rodava . Ela traz alguns problem as de compatibil idade entre a s plataformas, fazendo que nem sempre o programa tinha aparência desejada em todos os sis temas operacionais, sendo também mais difí cil de ser usada. Para suprir as necessidades cada ve z mais freqüentes de uma API mais estável e fácil de usar, o Swing foi criado como uma extensão do Java a partir da versão 1.2. Swing fornece componentes de mais alto nível, possibilitando assim uma melhor compatibilidade GU J - In t rodução a pr ogram ação g ráfi ca em Java com Swin g h t t p:/ /www.g u j .com.br/art icl es/38 1 de 13 31/ 08/2011 16:24

Upload: vinicius-rodrigues

Post on 07-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 1/13

GUJ

Notícias, artigos e o maior fórum brasileiro sobre Javahomefórumnotíciastópicos recentesempregosartigos

 

Bem vindo ao GUJ. Crie seu login, ou digite-o para logar no site.Usuário: Senha:

Introdução a programação gráfica em Java com Swing

em 28/04/2003 , por Rafael SteilIntrodução a programação gráfica em Java com Swing

 Neste artigo vamos ver como criar aplicações gráficas emJava, mais precisamente usando um Framework ( conjunto declasses ) chamado Swing. Veremos três exemplos, começando

com um simples programa que apenas escreve uma mensagemna tela, passando para um programa que já trabalha comcaixas de texto e botões, e por final veremos como trabalhar com listas. Há ainda uma seção especialmente sobregerenciamento de layout, os chamados "Layout Managers",item muito importante quanto se trata de programação GUI. Não é necessário que você tenha alguma experiência anterior em programação gráfica com Java, porém um minimo deconhecimento da tecnologia ajudaria, apesar de não ser imprensindível, uma vez que é bastante comum as pessoasterem o primeiro contato com Java através de programação

gráfica. Conhecimentos de lógica de programação são necessários, mesmo que seja apenas uma base. Paradigitar os programas você pode usar qualquer editor de textos ou código de sua preferência, tais como Notedad,UltraEdit, VI, Emacs, KWrite e assim por diante. Programas em Java necessitam do JDK para seremdesenvolvidos e, uma vez compilados, apenas a JRE faz-se ncessário. O JDK, por já ser um ambiente completode desenvolvimento, já trás uma versão da JRE, portanto você não precisa ter os dois pacotes instalados namesma máquina. Se você nunca mexeu com Java ou não tem ( ou não sabe como instalar ) o JDK, dê uma lidanos tutoriais "Instalando e configurando o JDK no Linux" ( ou "Instalando e configurando o JDK no Windows"caso seja usuário de Windows ), " Classpath, entendendo o que é e para que serve", "Sopa de letrinhas sabor Java" e "Os erros e dúvidas de um iniciante", disponíveis no site do GUJ seção "Artigos" e "Tutoriais".Conhecendo o Swing

 Nas primeiras versões do Java a única forma de fazer programas gráficos era através da AWT, uma biblioteca de baixo-nível que dependia de código nativo da plataforma onde rodava. Ela traz alguns problemas decompatibilidade entre as plataformas, fazendo que nem sempre o programa tinha aparência desejada em todos ossistemas operacionais, sendo também mais difícil de ser usada. Para suprir as necessidades cada vez maisfreqüentes de uma API mais estável e fácil de usar, o Swing foi criado como uma extensão do Java a partir daversão 1.2. Swing fornece componentes de mais alto nível, possibilitando assim uma melhor compatibilidade

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 2: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 2/13

entre os vários sistemas onde Java roda. Ao contrário da AWT, Swing não contém uma única linha de códigonativo, e permite que as aplicações tenham diferentes tipos de visuais ( skins ), os chamados "Look and Feel". Jácom AWT isso não é possível, tendo todos os programas a aparência da plataforma onde estão rodando. Apesar da AWT ainda estar disponível no Java, é altamente recomendável que sejam usado Swing, pelas razões descritasaqui e por várias outras. Componentes Swing contém um "J" na frente, como em JButton por exemplo.Componentes AWT não contém inicial alguma ( "Button" no caso ). Além disso tudo, as vantagens do Swing não param por ai. Há uma enorme gama de controles extras disponíveis, tais como áreas de texto que nativamente podem mostrar conteúdo RTF ou HTML, botões com suporte a imagens, sliders, selecionadores de cores etc. É

também possível alterar o tipo de borda para a maior parte dos componentes, todos podem ter imagensassociadas e é possível até ter controle de como são desenhados os mínimos detalhes de apresentação.Começando

O código completo do programa, que não é grande, vai ser mostrado completo primeiramente, para depois entãoanalizarmos cada instrução dele. Digite o seguinte código em um arquivo chamado "SwingExemplo1.java". Noteque é muito importante ficar atendo em relação à maiúsculas e minúsculas, o Java nota a diferença entre taiscaracteres.view plain print?

import java.awt.BorderLayout;1. 2.import javax.swing.JFrame;3.import javax.swing.JLabel;4.import javax.swing.JPanel;5. 6. 7. public class SwingExemplo1 extends JFrame8.{9.

JPanel panel;10.JLabel msg;11.

 12.public SwingExemplo1()13.{14.

super("Java!");15.}16.

 17.public void criaJanela()18.{19.

panel = new JPanel();20.msg = new JLabel("GUJ.com.br");21.

 22.panel.add(msg);23.

 24.getContentPane().add(panel, BorderLayout.CENTER);25.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);26.  27.pack();28.setVisible(true);29.

}30. 31.

public static void main(String args[])32.{33.

SwingExemplo1 s = new SwingExemplo1();34.s.criaJanela();35.

}36.

}37.

 Não se assuste e muito menos não se intimide com o código, o qual pode parecer um pouco complicado noinício. À medida que você vai pegando experiência em programação Java, as nomemclaturas e nomes de classes

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 3: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 3/13

e métodos vão se tornando comuns, ficando fácil de lembrar. Vamos ver agora as partes mais importantes do programa e o que cada uma delas fazem. Primeiramente temos as declarações que importam as bibliotecasnecessárias para o nosso programa:view plain print?

import java.awt.BorderLayout;1. 2.import javax.swing.JFrame;3.

import javax.swing.JLabel;4. import javax.swing.JPanel;5.

Estas linhas são muito importantes, pois caso alguma falte ou esteja errada, o programa não irá nem compilar. Osnomes podem parecer estranhos, mas tudo tem um padrão bem definido e fácil de ser lembrado. Por exemplo, onome "javax.swing.JLabel" diz que estamos requisitando a classe "JLabel", que faz parte do pacote de utilidadesgráficas "swing", o qual pertence ao pacote "javax". Seguindo temos a declaração da classe em si, na linhaview plainprint?

 public class SwingExemplo1 extends JFrame1.

. Isso diz que o nome do nosso programa será "SwingExemplo1", e que ele deve já herdar por padrão tudo o quea classe "JFrame" disponibiliza. Emview plain print?

JPanel panel;1.JLabel msg;2.

temos a declaração de 2 variáveis que representam o painel onde ficarão os componentes e uma label de texto,respectivamente. A próxima instrução,view plain print?

 public SwingExemplo1()1.{2.

super("Java!");3.}4.

tem o mesmo nome do nosso programa, e é chamada de "construtor". Dentro dele chamamos um método daclasse pai - JFrame - a qual herdamos. Esta linha configura o título da janela para "Java!". Em seguida criamosum método chamado "criaJanela", o qual usaremos para criar os componentes e mostrar a nossa aplicação.Dentro deste método ( para quem não sabe, um método é nada mais do que uma função normal, porém pertencente a uma determinada classe ) é que fazemos todo o "trabalho sujo". Primeiramente criamos um painel para acomodar os componentes e por fim é criado um label de texto contendo a frase "GUJ.com.br". Tudo isso pode é feito nas linhasview plain print?

 panel = new JPanel();1.msg = new JLabel("GUJ.com.br");2.

A linhaview plain print?

 panel.add(msg);1.

executa a tarefa de adicionar o nosso componente de texto ao painel. Um programa gráfico em Java pode conter 3 tipos diferentes de janela: Um JFrame, o qual usamos em nosso exemplo, para representar a janela "principal"

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 4: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 4/13

da aplicação, um JDialog para representar uma janela de diálogo (uma janela secundária, como uma janela deformatação de fonte do texto, por exemplo ), e, por último, um JApplet para ser usado em Browsers. Importante:você não precisa saber essas coisas decoradas! O java possui um poderosíssimo sistema de documentação, evocê tem acesso a isto em http://java.sun.com/j2se/1.4/docs/api/index.html. Por fim, neste método, as linhasview plain print?

getContentPane().add(panel, BorderLayout.CENTER);1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);2.

 3.  pack();4.setVisible(true);5.

Dizem ao Java que queremos os componentes centralizados na tela, que ao clicar no "xizinho" da janela é paraterminar o programa, faz com que a janela seja redimensionada de maneira a acomodar corretamente oscomponentes nela contidos, e, por último mas não menos importante, fazemos a janela ser mostrada,respectivamente. Salve o arquivo com o nome SwingExemplo1.java ( não esqueça das maiúsculas e minúsculas )e depois compile:view plain print?

 javac SwingExemplo1.java1.

e execute-o:view plain print?

 java SwingExemplo11.

Se tudo ocorrer perfeitamente, você irá ver uma pequena janela com o título "Java!" e escrito 'GUJ.com.br" nomeio dela. Gerenciamento de layout Gerenciamento de layout ( Layout Management ) é o processo dedeterminar o tamanho e a posição dos componentes na janela gráfica do programa. É ele o responsável por 

determinar onde o componente irá ficar, como irá ficar, qual o comportamento a ser tomado na hora deredimensionar a tela. Por padrão o Java vem com cinco gerenciadores de layout: BorderLayout, BoxLayout,FlowLayout, GridBagLayout, GridLayout e um adicional chamado CardLayout. São os gerenciadores de layoutque determinam como os componentes irão ficar em seu programa, portanto um bom conhecimento sobre ofuncionamento dos mesmos faz-se necessário para ter domínio de programação gráfica em Java. Geralmente,quando chamamos o método "add" para adicionar um componente na tela, ele será posicionado de acordo com ogerenciador de layout previamente configurado. A maior parte simplemente vai adicionando os componentescom base na ordem em que foram programados, porém alguns outros, como o BorderLayout, necessitam quevocê informe a posição relativa no container. A escolha do gerenciador de layout depende muito dasnecessidades do programa. Por padrão todos objetos JPanel são configurados para usar o FlowLayout, enquantoum JFrame e JDialog já usam o BorderLayout como padrão. Em ambos os casos é usado o método "setLayout"

 para especificar um novo layout manager, sendo necessário passar para este método o tipo que desejamos.Abaixo há um exemplo para cada tipo de gerenciador de layout, ficando assim fácil para vermos como cada umse comporta.O programa BorderLayoutTest.java

O primeiro exemplo mostra como um BorderLayout funciona. Digite o seguinte código e salve como"BorderLayoutTest.java":view plain print?

import javax.swing.*;1.import java.awt.*;2. 3. public class BorderLayoutTest extends JFrame4.{5.

public BorderLayoutTest()6.{7.

JButton botao1 = new JButton("Botão 1");8.

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 5: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 5/13

JButton botao2 = new JButton("Botão 2");9.JButton botao3 = new JButton("Botão 3");10.JButton botao4 = new JButton("Botão 4");11.JButton botao5 = new JButton("Botão 5");12.

 13.// Como o padrao de um JFrame é o14.// BorderLayout, simplesmente adicionamos15.// os componentes na tela16.

getContentPane().add(botao1, BorderLayout.NORTH);17. getContentPane().add(botao2, BorderLayout.CENTER);18.getContentPane().add(botao3, BorderLayout.WEST);19.getContentPane().add(botao4, BorderLayout.SOUTH);20.getContentPane().add(botao5, BorderLayout.EAST);21.

 22.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);23.

 24.pack();25.setVisible(true);26.

}27.

 28. public static void main(String args[])29.{30.

new BorderLayoutTest();31.}32.

}33.

Compile usandoview plain print?

 javac BorderLayoutTest.java1.

e execute com o comandoview plain print?

 java BorderLayoutTest1.

Usando BoxLayout

Um BoxLayout coloca os componentes em uma única linha ou coluna, permitindo ainda que você especifique oalinhamento deles. Digite o seguinte programa e salve em um arquivo chamado "BoxLayoutTest.java":view plain print?

import java.awt.*;1.import javax.swing.*;2. 3. public class BoxLayoutTest extends JFrame4.{5.

public BoxLayoutTest()6.{7.

JPanel panel = new JPanel();8.panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));9.

 10.

JButton botao1 = new JButton("Botão 1");11. JButton botao2 = new JButton("Botão 2");12.JButton botao3 = new JButton("Botão 3");13.JButton botao4 = new JButton("Botão 4");14.JButton botao5 = new JButton("Botão 5");15.

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 6: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 6/13

 16.panel.add(botao1);17.panel.add(botao2);18.panel.add(botao3);19.panel.add(botao4);20.panel.add(botao5);21.

 22.getContentPane().add(panel);23.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);24.  25.pack();26.setVisible(true);27.

}28. 29.

public static void main(String args[])30.{31.

new BoxLayoutTest();32.}33.

}34.

Usando FlowLayout

Como dito anteriormente, um FlowLayout é o gerenciador padrão de todo JPanel, caso não seja especificadooutro. FlowLayout posiciona os componentes lado-a-lado, e em termos seria a mesma coisa que usar umBoxlayout com a propriedade X_AXIS setada ( no nosso exemplo anterior usamos Y_AXIS ). O seguinte programa, "FlowLayoutTest.java", demostra isso:view plainprint?

import javax.swing.*;1.import java.awt.*;2. 3.

 public class FlowLayoutTest extends JFrame4.{5. 6.

public FlowLayoutTest()7.{8.

JPanel panel = new JPanel();9. 10.

JButton botao1 = new JButton("Botão 1");11.JButton botao2 = new JButton("Botão 2");12.JButton botao3 = new JButton("Botão 3");13.JButton botao4 = new JButton("Botão 4");14.

JButton botao5 = new JButton("Botão 5");15.  16.panel.add(botao1);17.panel.add(botao2);18.panel.add(botao3);19.panel.add(botao4);20.panel.add(botao5);21.

 22.getContentPane().add(panel);23.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);24.

 25.pack();26.setVisible(true);27.

}28. 29.

public static void main(String args[])30.

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 7: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 7/13

{31.new FlowLayoutTest();32.

}33.}34.

Usando GridLayout

Um GridLayout atua como uma grade de uma planilha de cálculo, colocando os componentes em linhas e

colunas pré-determinadas e deixando os componentes com o mesmo tamanho. Veja isso no programa"GridLayoutTest.java":view plainprint?

import javax.swing.*;1.import java.awt.*;2. 3. public class GridLayoutTest extends JFrame4.{5. 6.

public GridLayoutTest()7.{8.

// 3 linhas, 2 colunas9.getContentPane().setLayout(new GridLayout(3, 2));10.

 11.JButton botao1 = new JButton("Botão 1");12.JButton botao2 = new JButton("Botão 2");13.JButton botao3 = new JButton("Botão 3");14.JButton botao4 = new JButton("Botão 4");15.JButton botao5 = new JButton("Botão 5");16.

 17.getContentPane().add(botao1);18.getContentPane().add(botao2);19.

getContentPane().add(botao3);20.getContentPane().add(botao4);21.getContentPane().add(botao5);22.

 23.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);24.

 25.pack();26.setVisible(true);27.

}28. 29.

public static void main(String args[])30.

{31. new GridLayoutTest();32.}33.

}34.

Usando GridBabLayout

O mais flexível gerenciador de layout é o GridBagLayout. Ele permite colocar componentes em grades decolunas, sendo possíve um componente ocupar mais de uma coluna ao mesmo tempo. As linhas também não precisam necessariamente ter os mesmos tamanhos, ou seja, você pode configurar diferentes larguras e alturas deacordo com a necessidade. Eis o programa "GridBaglayoutTest.java":view plain print?

import javax.swing.*;1.import java.awt.*;2. 3. public class GridBagLayoutTest extends JFrame4.

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 8: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 8/13

{5.public GridBagLayoutTest()6.{7.

GridBagLayout layout = new GridBagLayout();8.GridBagConstraints c = new GridBagConstraints();9.

 10.getContentPane().setLayout(layout);11.

 12.

JButton botao1 = new JButton("Botão 1");13. JButton botao2 = new JButton("Botão 2");14.JButton botao3 = new JButton("Botão 3");15.JButton botao4 = new JButton("Botão 4");16.JButton botao5 = new JButton("Botão 5");17.

 18.// Configura as proridades de cada botao19.// Botao 120.c.gridy = 0; // primeira linha21.c.gridx = 0; // primeira coluna22.layout.setConstraints(botao1, c);23.

getContentPane().add(botao1);24.  25.// Botao 226.c.gridy = 0; // primeira linha27.c.gridx = 1; // segunda coluna28.layout.setConstraints(botao2, c);29.getContentPane().add(botao2);30.

 31.// Botao 332.c.gridy = 0; // primeira linha33.c.gridx = 2; // terceira coluna34.layout.setConstraints(botao3, c);35.getContentPane().add(botao3);36.

 37.// Botao 438.c.gridy = 1; // segunda linha39.c.gridx = 0; // primeira coluna40.c.gridwidth = 3; // Ocupar o espaço de 3 colunas41.layout.setConstraints(botao4, c);42.getContentPane().add(botao4);43.

 44.// Botao 545.c.gridy = 2; // terceira linha46.

c.gridx = 1;47.c.gridwidth = 2;48.layout.setConstraints(botao5, c);49.getContentPane().add(botao5);50.

 51.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);52.pack();53.setVisible(true);54.

}55. 56.

public static void main(String args[])57.

{58. new GridBagLayoutTest();59.}60.

}61.

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 9: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 9/13

Logicamente é possível fazer muito mais com os gerenciadores de layout, há várias maneiras de configurar eutilizar. Para obter mais informações sobre so métodos disponíveis para cada um consulte a API, disponível emhttp://java.sun.com/j2se/1.4.1/docs/api/index.htmlMitos sobre programação gráfica com Java

Existem muitos mitos sobre Java, uns são verdadeiros, outros, devido ao amadurecimento da tecnologia, não sãomais, e há ainda os mitos puramente existentes para falar mal. Um dos maiores e mais comentados até hoje é "oJava é lento". Não, o Java não é lento, pelo menos não mais, como antigamente. Pelo fato do Java ter um código

intermediário, indepentende de plataforma e sistema operacional, o sistema de carregamento é um poucodiferente de programas dependentes de plataforma, como Delphi, C e VB. Atualmente tecnologias comoHotSpot e compiladores JIT ( Just-In-Time ) fazem que programas em Java rodem de maneira extremamentesatisfatória, muitas vezes comparando-se com programas compilados nativamente. Programas em Java tendem anecessitar de mais memória, mas isso não chega a ser um impecilho nos dias de hoje, visto que peças dehardware como memória RAM estão extremamente baratos. Obviamente tentar rodar uma aplicação complexaem uma máquina antiga e pouca memória não será muito agradável, apesar de não ser impossível. É muitoimportante tem a consiência que a velocidade de um programa não depende apenas da tecnologia ecompiladores, mas sim do programador também, pois um código mal escrito só ajuda a piorar a performance.Um segundo exemplo

Tendo tudo isso em mente, vamos ver um segundo exemplo de programa gráfico, o qual faz uso de um botão e

caixa para digitação de texto. Veremos também como manipular a ação de cliques do mouse. Abra seu editor decódigos preferido e digite o seguinte programa:view plain print?

import java.awt.*;1.import java.awt.event.*;2.import javax.swing.*;3. 4. public class SwingExemplo2 extends JFrame implements ActionListener 5.{6.

JButton botao;7.JPanel panel;8.

JTextField texto;9. 10.

public SwingExemplo2()11.{12.

super("GUJ - Java");13.}14.

 15.public void criaJanela()16.{17.

texto = new JTextField("Digite algo...");18. 19.

panel = new JPanel();20. panel.setLayout(new GridLayout(2, 1));21. 22.

botao = new JButton("Me clique");23.botao.addActionListener(this);24.

 25.panel.add(texto);26.panel.add(botao);27.

 28.getContentPane().add(panel, BorderLayout.CENTER);29.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);30.

 31. pack();32.setVisible(true);33.

}34. 35.

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

13 31/08/2011 16:24

Page 10: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 10/13

public void actionPerformed(ActionEvent event)36.{37.

botao.setText(texto.getText());38.}39.

 40.public static void main(String args[])41.{42.

SwingExemplo2 ex2 = new SwingExemplo2();43.

ex2.criaJanela();44. }45.}46.

Salve este arquivo com o nome "SwingExemplo2.java" e compile como fizemos no primeiro exemplo. Aoexecutar com o comandoview plain print?

 java SwingExemplo21.

, deverá aparecer uma telinha com o título "GUJ - Java", um campo para digitação de texto e um botãozinhoescrito "Me clique". Ao clicar no botão o texto existente no campo de texto se tornará o título do botão! Muitodo código que fizemod agora é igual ou parecido com o do exemplo 1. As novidades marcantes são a palavra-chave "implements", emview plain print?

 public class SwingExemplo2 extends JFrame implements ActionListener 1.

que nos diz que, além dos recursos de um JFrame, queremos ter disponível o acesso aos recursos de umActionListener, o qual usamos para processar os eventos de vários componentes, como o botão no nosso caso.Anteriormente falamos que aplicações gráficas em Java trabalham muito com grades, e é isso que fazemos nalinhaview plain print?

 panel.setLayout(new GridLayout(2, 1));1.

Aqui estamos dizendo que o nosso painel é para ter o formato de 2 linhas e 1 coluna, como se fosse uma grademesmo. A outra adição significativa é o método "actionPerformed", o qual se encarrega de processar eventos decomponentes. Geralmente é necessário verificar qual componente esta requisitanto processamento no momento,mas como no nosso caso só queremos saber do botão, nao fazemos tal verificação. Isso pode ser visto na partede código

view plain print? public void actionPerformed(ActionEvent event)1.{2.

botao.setText(texto.getText());3.}4.

O nome "public void actionPerformed(ActionEvent event)" não é um nome aleatório, mas sim um métododefinido na interface "ActionListener", a qual requisitamos na declaração da classe. A chamada aview plain print?

 botao.setText(texto.getText());1.

muda o texto do botão para o conteúdo do nosso campo de texto.IDE's & RAD's

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

de 13 31/08/2011 16:24

Page 11: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 11/13

Se você já tem experiência, ou ao menos já mexeu com alguma outra linguagem de programação que utilizenativamente ferramentas RAD como Delphi e Visual Basic, deve te notado que em nosso exemplo muita coisadeve ser feita no braço, como por exemplo a criação de janelas e posicionamento de componentes. Apesar deexistirem ambientes puramente RAD para Java, como o Borland Jbuilder - encontrado no endereçohttp://www.borland.com/jbuilder - em Java é bastante comum o programador ter um contato mais "baixo nível"com o código. Os mais atentos também devem ter notado que apesar do componente de texto ter ficadocentralizado corretamente na tela, nós sequer ao menos especificamos as coordenadas x/y do mesmo. Em Java, ofuncionamento dos componentes do programa depende muito de grades ( uma grade funciona como uma

 planilha, com linhas e colunas ) e posicionamento cardinas, como norte, sul e oeste, por exemplo. Pode parecer estranho e complicado, mas isso é o que garante ao desenvolvedor que independentemente do sistemaoperacional que a aplicação for executada, o visual será exatamente o mesmo em todos ambientes. Uma IDEextremamente poderosa e versátil existente é o Eclipse ( http://www.eclipse.org ), produzido pela IBM. OEclipse possui uma enorme quantidade de recursos, que vão desde auxiliadores para a criação de aplicações, passando por recuros de auto-completar código, mapeamento de classes e objetos relacionados, verificação deerros em tempo de edição, debugador integrado e muito mais. Apesar dele não ser um editor RAD por default, oseu sistema de plugins permite a adição de componentes para tal tarefa. O JBuilder, produzido pela Borland, éum ambiente RAD por natureza, onde o visual gráfico das aplicações são criadas simplesmente com o arrastar esoltar do mouse, exatamente como no Delphi. Isso auxilia bastante o desenvolvimento, uma vez que já é possívelver em tempo de desenvolvimento como irá ficar a interface do programa. O JBuilder é uma ferramenta paga,

 porém há uma versão grátis disponível chamada "Personal", a qual dispõe de bem menos componentes prontos,mas já ajuda quem esta começando.Um exemplo mais avançado

 Nosso último programa de exemplo irá mostrar um controle chamado JList, e dará uma visão melhor de como posicionar os elementos na tela O programa é simples, consiste em um campo de texto, uma lista e um botão.view plain print?

import javax.swing.*;1.import java.awt.*;2.import java.awt.event.*;3. 4. public class SwingExemplo3 extends JFrame implements ActionListener 5.

{6.JList lista;7.JButton botaoAdicionar;8.JTextField textField;9.JPanel listPanel;10.JPanel botaoPanel;11.JScrollPane scroll;12.DefaultListModel listModel;13.

 14.public SwingExemplo3()15.{16.

super("GUJ - JList");17.  18.textField = new JTextField("Digite algo");19.botaoAdicionar = new JButton("Adicionar");20.listModel = new DefaultListModel();21.listPanel = new JPanel();22.botaoPanel = new JPanel();23.

 24. 25.

// Adiciona um item inicial na lista26.listModel.addElement("Item 1");27.

listModel.addElement("Item 2");28. listModel.addElement("Item 3");29. 30.

// Configura a lista e adiciona ao painel31.lista = new JList(listModel);32.

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

e 13 31/08/2011 16:24

Page 12: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 12/13

lista.setVisibleRowCount(3);33. 34.

scroll = new JScrollPane(lista);35. 36.

listPanel.add(scroll);37.getContentPane().add(listPanel, BorderLayout.CENTER);38.

 39.// Adiciona o campo de texto e o botao ao painel40.

botaoAdicionar.addActionListener(this);41. botaoPanel.add(textField);42.botaoPanel.add(botaoAdicionar);43.

 44.getContentPane().add(botaoPanel, BorderLayout.SOUTH);45.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);46.

 47.// Mostra a janela48.pack();49.setVisible(true);50.

}51.

 52. public void actionPerformed(ActionEvent event)53.{54.

if (textField.getText() != "") {55.listModel.addElement(textField.getText());56.getContentPane().invalidate();57.getContentPane().validate();58.

}59.}60.

 61.public static void main(String args[])62.{63.

SwingExemplo3 s = new SwingExemplo3();64.}65.

}66.

Salve em um arquivo chamado "SwingExemplo3.java", compile e rode. Neste exemplo temos 4 novos tipos decomponentes: o JTextField, que é um campo de texto simples de uma única linha, um JList, que é nada mais queum componente onde itens são disponibilizados para seleção, um JScrollPane, que serve para adicionar barras derolagem a um determinado componente, e por último temos o DefaultListModel, o qual é usado em conjuntocom o Jlist. Adicionar itens em um JList é simples, basta usar o métodoview plain print?

addElement1.

 para adicionar um item ao final da lista ouview plain print?

add1.

 para adicionar um item em uma posição específica. A chamada ao métodoview plain print?

lista.setVisibleRowCount(3);1.

diz ao Java que queremos deixar visíveis apenas 3 itens da lista, e caso haja mais do que isso, é para adicionar as

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38

de 13 31/08/2011 16:24

Page 13: GUJ - Introdução a programação gráfica em Java com Swing

8/4/2019 GUJ - Introdução a programação gráfica em Java com Swing

http://slidepdf.com/reader/full/guj-introducao-a-programacao-grafica-em-java-com-swing 13/13

 barras de rolagem. O métodoview plain print?

actionPerformed1.

,view plain print?

 public void actionPerformed(ActionEvent event)1.{2.

if (textField.getText() != "") {3.listModel.addElement(textField.getText());4.getContentPane().invalidate();5.getContentPane().validate();6.

}7.}8.

 primeiramente verifica se o campo de texto não esta vazio, então adiciona o texto na lista usado a chamada

view plain print?listModel.addElement(textField.getText());1.

e por fim as duas últimas linhas mandam que aplicação seja "redesenhada", para que os componentes notem quenovos itens foram adicionados ao JList.Conclusão

Ao longo deste tutorial tivemos uma breve demostração do funcionamento do Swing, o conjuto de classesdisponibilizadas no Java para a criação de aplicações gráficas de alto nível. Vimos também alguns componentes básicos como JButtom e JTextField e aprendemos o funcionamento dos Layout Managers. Antes de mais nada, programar em Java, e em especial Swing, requer uma maneira de pensar um pouco diferente, o que pode ser um

 pouco estranho no início, uma vez que precisamos estar "conectando" os componentes uns com os outros,escrevendo métodos para processar os cliques de mouse e outras coisas relacionadas, os chamados Event eAction Listeners Porém, com o tempo isso tudo vai se firmando, e você verá que programar em Java é ao mesmotempo prazeiroso e desafiador. No site do GUJ você pode contar com a ajuda de várias pessoas da comunidadeJava brasileira no fórum, dentre outras várias coisas relacionadas a Java. Até a próxima. 

Apoiado e desenvolvido por Caelum Cursos Java - GUJ: desde 2002Conheça também AgendaTech, Tectura, Programador Poliglota e InfoQ Brasil 

- Introdução a programação gráfica em Java com Swing http://www.guj.com.br/articles/38