Os Objetos Visuais Do Swing

Embed Size (px)

Citation preview

Os Objetos Visuais do Swing

1

Os Objetos Visuais do Swing Os Objetos dos Container A classe JFrame Algumas Modificaes em JFrame A classe JLabel A classe JTextField A classe JPasswordField A classe JTextArea A classe JButton A classe JPanel A classe JTabbedPane A classe JSplitPane A classe JSlider A interface ChangeListener A classe JScrollPane A classe JScrollBar A classe JDialog A classe JOptionPane

2

Os Objetos dos Containers Um Container um objeto visual ao qual possvel acrescentar outros objetos. O prprio Container pode ser instalado no interior de um objeto. A classe JComponent do javax.swing deriva de Container do java.awt e todos os objetos visuais do swing derivam de JComponent, sendo tambm subclasses de Container. JFrame uma classe do pacote javax.swing que substituiu Frame do java.awt e no derivada de JComponent. JFrame uma estrutura multicamada e permite muitos outros recursos no suportados pela classe Frame. JFrame permite a conteno de outros objetos derivados de JComponent: JApplet, JWindow, JDialog e JInternalFrame.3

A Classe JFrame a base sobre a qual sero desenvolvidas as interfaces visuais de usurio (GUI). import javax.swing.*; Exemplo 8_1: public class Exemplo8_1 extends JFrame{ Exemplo8_1() { setTitle("Descobrindo Posio x,y, largura e altura do Frame JFrame"); setBounds(200,150,400,300); setVisible(true); } public static void main(String arg[]) { new Exemplo8_1(); } }4

A Classe JFrameExemplo8_2 A classe Color pertence ao pacote java.awt, o qual importado no incio do programa. A modificao da cor de fundo em um JFrame deve ser feita sobre o painel de contedos e permite ento que seja aplicado o mtodo, conforme segue: getContentPane ( ).setBackground(Color.orange) A Classe que instancia o Exemplo8_2 herda a classe Exemplo8_1, e consequentemente, a classe JFrame. Deseja-se no entanto que esta classe seja encarada como uma superclasse. Para isto foi includa a instruo: super ( );5

Algumas modificaes em JFrame: O painel apresentado pela execuo da classe JFrame assume, por default, o modelo do sistema operacional em que ele est instalado. possvel, no entanto, alterar alguns detalhes desse padro fazendo a chamada ao mtodo: getRootPane( ).setWindowDecoratedStyle( JRootPane.FRAME ); Exixtem nove constantes que alteram a aparncia do quadro. No caso (JRootPane,NONE) ou o valor numrico (0), a janela vai ficar com a aparncia comum dos quadros do sistema operacional em uso. Se for lanado o parmetro (JRootPane,FRAME) , a tela vai assumir um padro prprio da JVM, chamado JLF (Java Look and Feel) ou simplesmente aparncia METAL. 1 NONE 2 FRAME 3 INFORMATION_DIALOG 4 ERROR_DIALOG 5 COLOR_CHOOSER_DIALOG 6 FILE_CHOOSER_DIALOG 7 QUESTION_DIALOG 8 WARNING_DIALOG6

Algumas modificaes em JFrame: A operao de fechamento executada pelo mtodo: setDefaultCloseOperation( parmetro ); o qual admite quatro parmetros: HIDE_ON_CLOSE oculta a janela (default na classe); DO_NOTHING_ON_CLOSE no executa nenhuma ao (desativa o boto de fechamento); DISPOSE_ON_CLOSE faz desaparecer a janela e libera os recursos da classe que esto sendo usados pela JVM; EXIT_ON_CLOSE faz encerrar o aplicativo de uma forma equivalente ao uso de um System.exit(0); Exemplo8_47

Algumas modificaes em JFrame: Pode-se ainda alterar as bordas do quadro por meio do mtodo setBorder ( ) que pertence RootPane. Sua chamada segue a sintaxe: getRootPane( ).setBorder (a classe que trata das bordas *) Sua aplicao no Exemplo8_4 fica: getRootPane( ).setBorder(BorderFactory.createEtchedBorder(0));

8

A Classe NFrame: Com algumas modificaes na classe Exemplo8_4 criamos a classe NFrame, ou seja:

9

A Classe NFrame:import javax.swing.*; import java.awt.*; public class NFrame extends JFrame { public NFrame() { setLocation(50,100); setTitle("Este NFrame ( um JFrame personalizado )"); setSize(600,450); setUndecorated(true); getRootPane().setWindowDecorationStyle(JRootPane.FRAME); getRootPane().setBorder(BorderFactory.createLineBorder(Color.black,3)) ; setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String arg[]) { new NFrame(); } }10

A Classe JLabel Trata-se de um objeto que uma caixa dentro da qual uma String representativa de uma mensagem exibida. O mtodo setText define a mensagem que ser exibida pelo label, ou seja: setText ( Este um rtulo \JLabel\ ) O mtodo setToolTipText est ligado a um evento do mouse. Quando est sobre a rea do objeto Label, ele dispara a apresentao de uma pequena caixa contendo a mensagem (dica) digitada. Sua implementao feita da forma: setToolTipText( Aqui voc escreve uma rpida dica ) Para posicionamento do objeto e dimensionamento pode-se usar os mtodos setSize em conjunto com setLocation ou o mtodo setBounds.11

A Classe JLabel Exemplo8_5

JLabel L1 = new JLabel(); this.L1 = L1; L1.setText("Este um rtulo \"JLabel\""); L1.setSize(200,15); L1.setFont(F); L1.setLocation(105,5); L1.setToolTipText("Aqui voce escreve uma rapida dica"); L1.setForeground(Color.blue);12

A Classe JTextField Trata-se de uma caixa que permite a incluso de um texto de apenas uma linha (via digitao do usurio). Exemplo8_6:

13

A Classe JTextField Os mtodos principais dessa classe so: setSize(int Width,int Height) define a largura e altura do texto. setLocation(int x,int y) define as coordenadas x e y da posio do objeto na tela. setBounds(int x,int y, int Width,int Height) substitui os mtodos anteriores setText(String mensagem) admite uma mensagem digitada pelo programador como um valor inicial ou como uma informao. setFont(new Font (...)) permite que seja alterada a fonte com a qual ser exibida a mensagem dentro da caixa. setForeground(Color.red) admite alterar a cor do primeiro plano (cor da fonte). setBackground(Color.yellow) permite alterar a cor de fundo da caixa de texto. getText( ) permite a captura do texto digitado pelo usurio.14

A Classe JPasswordField uma classe derivada de JTextField; Serve para introduo de campos de senha no computador; Segue os mesmos mtodos de sua superclasse (JTextField), apenas acrescenta como um artifcio opcional o mtodo: setEchoChar( x ); Exemplo8_6:

15

Eventos do Objeto JPasswordField A Caixa de senha sozinha dentro do frame no tem utilidade nenhuma; O programa necessita identificar uma senha e executar uma ao necessrio uma interface chamada Ouvinte ou Listener que recebe um sinal do objeto e, como conseqncia , invoca os mtodos correspondentes a ao ocorrida. O Exemplo8_8 uma subclasse de Exemplo8_7 e registra o campo de senha no ouvinte de eventos ActionListener por meio do mtodo: Sx.addActionListener ( this ) ;

16

Eventos do Objeto JPasswordField(Senha Correta) Executa a Classe Auxiliar8_7( )

(Senha Errada) Apresenta informao na Caixa de Dilogos Aps 3 tentativas erradas apresenta informao de sada do sistema17

A Classe JTextArea Tambm derivada de JTextField; Cria uma rea que pode ser inserido um texto. Possui os seguintes mtodos: JTextArea( ) cria um objeto rea de texto vazia e sem nenhum atributo predefinido. JTextArea( Document doc ) cria uma rea de texto com o documento especificado anexado a ela; JTextArea( int linhas, int colunas ) cria uma rea de texto com o nmero de linhas e colunas especificado; JTextArea( String texto ) cria uma rea de texto com o texto definido por ela; JTextArea( Document doc, int linhas, int colunas ) cria uma rea de texto com o texto especificado pelo programa e com o nmero de linhas e colunas dado.18

A Classe JTextArea Exemplo8_9

19

A Classe JButton Responsvel pela criao de botes no swing; Admite muitos mtodos que produzem variaes em torno da aparncia de um boto. Exemplo8_10;

20

Uma primeira Aplicao Arquivo: aplicao1_1.java incluso dos Labels. Criao do Frame com

21

Uma primeira Aplicao Arquivo:aplicao1_2.java Inclui as caixas de Texto e os Botes no painel criado em aplicao1_1.

22

Uma primeira Aplicao Arquivo: aplicao1_3.java Consiste na classe principal do aplicativo (classe de execuo). Inclui os eventos aos Botes, bem como na execuo geral do aplicativo. Sua aparncia idntica ao Painel apresentado pela aplicao1_2, apenas relacionada as aes aos botes B1, B2 e B3.

B1.addActionListener(this); B2.addActionListener(this); B3.addActionListener(this);

23

Uma primeira Aplicao Arquivo: aplicao1_4.java Neste arquivo executado o mtodo de clculo do consumo de um veculo. Seu processo consiste nos seguintes passos: Captura dos valores inseridos nas caixas de texto Tx1, Tx2 e Tx3 e transformao dos Strings (textos) capturados no tipo de varivel conveniente execuo do programa. Recolocao (ou troca) de vrgulas por ponto na caixa de texto Tx3. Clculo do trecho percorrido: aut = at ant Clculo do rendimento do veculo: rend = aut/l Transformao do resultado em uma varivel com 2 casas aps a vrgula e apresentao dos resultados.24

Uma primeira Aplicao

25

Uma primeira Aplicao

26

Uma primeira Aplicao

try { Leitura normal dos dados, verificao da distncia percorrida, clculo dos dados e apresentao dos resultados } catch(NumberFormatException ex) { JOptionPane.showMessageDialog(null,"Digite apenas nmeros !","Erro !", 0); }

27

A classe JPanel um container dentro do qual pode ser aplicado outros objetos, inclusive outro JPanel. A instncia deste objeto deve ser feita por: JPanel P1 = new JPanel( ); Esta classe admite muitos mtodos, sendo os principais: P1.setBounds(x,y,Width,Height) P1.setSize(Width,Height) P1.setLocation(x,y) P1.setBackground(Color.blue) P1.setBorders(Borderfactory.createLineBorder(Color.black,3) ) P1.setLayout( ) P1.setVisible(true)28

A classe JPanel O construtor JLabel admite um parmetro que um objeto da classe ImageIcon e permite exibir uma imagem dentro de um rtulo. Sua implementao feita por meio de: ImageIcon Im = new ImageIcon( C:/Imagens/Bauru.gif ); Importante: As dimenses de JLabel devem ser exatamente as mesmas da imagem que vai surgir dentro dele. Recomenda-se tambm evitar arquivos de imagens muito grandes.

29

Uma nova aplicao: o cardpio da lanchonete

Este exemplo trata de um sistema em que a superclasse NFrame vai recebendo novos objetos e novas funes a medida que a funcionalidade vai sendo implementada. A classe Exemplo8_11( ) a classe geradora de todo o sistema e consiste na criao de seis painis do tipo JPanel e o posicionamento de cada um deles dentro de NFrame. Para teste desta classe necessrio a implementao do mtodo de execuo, ou seja: public static void main (String arg[ ]) { New Exemplo8_11( ).setVisible(true); } O resultado da implementao desta classe apresentado a seguir.30

Uma nova aplicao: o cardpio da lanchonete

31

Uma nova aplicao: o cardpio da lanchonete

Na classe Exemplo8_12 adiciona-se os labels a cada um dos paineis contendo o ttulo de cada painel. Seu resultado fica:

32

Uma nova aplicao: o cardpio da lanchonete

Exemplo8_13( ) So adicionados os botes correspondentes em cada painel, bem como suas dicas para auxiliar as vendas.

33

Uma nova aplicao: o cardpio da lanchonete

Exemplo8_14( ) So adicionados os textos aos Labels representativos de cada painel. Tambm so criados novos labels contendo imagens dos produtos que, inicialmente no aparecem nos paineis pois so configuradas como no-visveis.

34

Uma nova aplicao: o cardpio da lanchonete

Exemplo8_15( ) So adicionados os eventos aos Botes onde, ao serem clicados fazem aparecer a imagem do produto com seu contedo. Quando se clica outro boto a imagem apresentada desaparece e surge uma nova imagem correspondente ao novo boto.

35

A Classe JTabbedPane Trata-se de um painel com abas que imita um tipo de fichrio. um objeto derivado do AWT e de JComponent do Swing. O mtodo construtor admite trs formas de instnciamento: JTabbedPane( ) cria um painel vazio e com as abas no topo do fichrio; JTabbedPane(int tabPlacement) O argumento definir a posio das abas: JTabbedPane.TOP ( default ) JTabbedPane.BOTTON JTabbedPane.LEFT JTabbedPane.RIGHT

36

A Classe JTabbedPane JTabbedPane(int tabPlacement int tabLayoutPolicy) Cria um painel vazio em que as abas estaro apresentadas todas permanentemente ou estaro unidas por um painel Scroll em que vo surgindo medida que o usurio rola o painel. definido pelas constantes: JTabbedPane.SCROLL_TAB_LAYOUT JTabbedPane.WRAP_TAB_LAYOUT

No Exemplo8_16 o cardpio da lanchonete (Exemplo8_15) foi aproveitado para criar uma nova forma de apresentao:

37

A Classe JTabbedPane

38

A Classe JSplitPane um painel dividido ao qual possvel acrescentar objetos, criando contexto correlatos (Exemplo8_17). No exemplo existem dois painis. O painel SP1 dividido no sentido vertical e que contm os painis P2 e P3.SP1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,P3,P2); SP1.setDividerLocation(200); O outro painel SP dividido no sentido horizontal e contm o painel P1 e o outro objeto JSplitPane. SP = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,P1,SP1); SP.setDividerLocation(80);39

A Classe JSplitPane

SP1.setDividerLocation(200);

SP.setDividerLocation(80);40

A Classe JSlider Implementa uma rgua com um cursor sob a forma de um boto deslizante. Trata-se de um controle deslizante. O construtor possui as seguintes sobrecargas: public JSlider( ) cria um controle deslizante com escala entre 0 e 100 e assume o valor inicial 50. public JSlider( int Orientao ) cria um controle deslizante com escala entre 0 e 100 e valor inicial 50 com a orientao definida pela constante: JSlider.VERTICAL JSlider.HORIZONTAL

public JSlider( int min , int mx ) cria um controle deslizante com escala entre min e mx e valor inicial mdio.41

A Classe JSlider public JSlider( int min , int mx, int valor ) cria um controle deslizante com escala entre min e mx e valor inicial = valor. public JSlider( int Orientao, int min , int mx, int valor ) cria um controle deslizante conforme orientao definida e com escala entre min e mx e valor inicial igual ao estabelecido pelo parmetro valor. Exemplo8_18 Faz a implementao de um painel para estudo das cores segundo valores de R (red), G(green) e B (blue). Foram implementadas trs rguas com variaes entre 0 e 255 e o resultado pode ser visualizado no painel. Os mtodos setMinorTracking( int menor ) e setMajorTracking(int major) definem os traos da escala de cores. Os mtodos setPaintTicks (true) definem a visualizao destes traos e o mtodo setPaintLabel( true ) define a apresentao dos valores da escala.42

A Classe JSlider

Foi empregada a interface ChangeListener que contm um nico mtodo stateChanged( ) estado alterado, cujo parmetro ChangeEvent. A variao da escala capturada pelo mtodo getValue( ) do objeto JSlider, correspondente por:P1.setBackground( newColor(JS1.getValue( ).JS2.getValue( ).JS3.getValue(c)));43

A Classe JScrollPane um painel de rolagem, permitindo assim, a insero de um objeto maior que suas dimenses. O mtodo construtor desta classe admite quatro opes: JScrollPane( ) cria um painel vazio em que ambos ScrollBars vo surgir quando forem necessrios. JScrollPane( component img ) cria um painel contendo uma imagem. Os ScrollBars vo surgir quando forem necessrios.44

A Classe JScrollPane JScrollPane(component img, int vsbPolicy, hsbPolicy ) cria um painel com o objeto indicado e com as barras de rolagem nas posies indicadas pelas constantes: JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED JScrollPane.VERTICAL_SCROLLBAR_ALWAYS JScrollPane.VERTICAL_SCROLLBAR_NEVER JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS JScrollPane.HORIZONTAL_SCROLLBAR_NEVER

JScrollPane(int vsbPolicy, hsbPolicy ) cria um painel com as barras de rolagem nas posies indicadas pelas constantes definidas anteriormente.45

A Classe JScrollPane Exemplo8_19

SP = new JScrollPane(Lx1); SP.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); SP.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 46

A Classe JScrollBar O Painel JScrollPane trabalha com dois JScrollBar associados. A barra de rolagem JScrollBar pode ser chamada em um programa para produzir algum efeito desejado, independente do painel, resultando um efeito semelhante ao do objeto JSlider. Exemplo8_20: Emprega-se dois elementos JScrollBar para mover um cone dentro de um espao na tela. Nesta classe implementada a interface ouvinte de eventos adjustmentListener. O mtodo associado: adjustmentValueChanged(AdjustmentEvent e) executa a movimentao do cone para as novas posies desejadas (x,y).47

A Classe JScrollBarExemplo8_20:

48

A Classe JDialog usada para produzir mensagens de dilogo com o usurio diante das possveis interaes deste com o programa. A tela gerada por JDialog no pode ser iconizada nem minimizada por padro.

49

A Classe JOptionPane uma classe que contm diversos painis de aviso para o usurio do programa. Os painis j obedecem um estilo padronizado. So quatro tipos possveis de painis JOptionPane. Suas chamadas obedecem a sintaxe: show.xxxxxxxxDialog( ); showConfirmDialog( ) solicita uma confirmao (boto YES) ou negao (boto NO) ou desistncia (boto CANCEL) do usurio. showInputDialog( ) entrada de informao. showMessageDialog( ) apresenta uma mensagem estabelecida pelo programador, proveniente de uma ao. showOptionDialog( ) trata-se de um painel com muitas alternativas. Trata-se de uma juno de todos os painis anteriores.50

A Classe JOptionPane A Classe JOptionPane usa quatro tipos de cones que podem ser substitudos por smbolos personalizados ou ento serem chamados por meio de uma constante: question chamado pela constante 3 ou ento: JOptionPane.QUESTION_MESSAGE information chamado pela constante 1 ou ento: JOptionPane.INFORMATION_MESSAGE warning chamado pela constante 2 ou ento: JOptionPane.WARNING_MESSAGE error chamado pela constante 0 ou ento: JOptionPane.ERROR_MESSAGE51

A Classe JOptionPane Os cones sero chamados dentro do objeto MessageDialog, definido pelo mtodo: JOptionPane.showMessageDialog( null, Aqui vai a sua mensagem , Ttulo, -1 ); A constante -1 define um MessageDialog sem cone; Para uma mensagem de erro utiliza-se a constante 0 ; Para uma mensagem de informao utiliza-se a constante 1 ; Para uma pergunta utiliza-se a constante 3 ; Para uma mensagem de alerta utiliza-se a constante 2 ;

52

A Classe JOptionPane Exemplo8_22

53

A Classe JOptionPane Exemplo8_23

54