Java10

6,668
-1

Published on

Published in: Technology, Art & Photos
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,668
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
372
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Java10

  1. 1. Linguagens e Técnicas de Programação - JAVA José Marcos Barbosa da Silveira [email_address]
  2. 2. Classes do Pacote Swing <ul><li>Objetivos deste capítulo </li></ul><ul><li>Demonstrar o funcionamento dos principais componentes do swing, considerados como classes do Java 2, para a criação da Interface Gráfica do Usuário; </li></ul><ul><li>Identificar os principais componentes presentes nas janelas de uma aplicação em Java, tais, como: botões, campos texto, barras de rolagem, lista de múltiplas escolhas, entre outros; </li></ul><ul><li>Demonstrar a utilização de diversos tipos de caixa de mensagens e menus; </li></ul><ul><li>Definir os principais métodos usados no controle de layout de uma aplicação por meio dos gerenciadores de layout. </li></ul>
  3. 3. Classes do Pacote Swing (cont.) <ul><li>Este capítulo aborda a utilização de classes já disponível no java, apropriadas para a criação de aplicações gráficas, conhecidas inicialmente como pacote AWT - Abstract Window Toolkit. Entretanto, como tudo tem sua evolução o pacote AWT está sendo substituído pelo pacote SWING. </li></ul><ul><li>A vantagem entre as classes do swing em relação às do pacote AWT é que o pacote swing melhorou a aparência, melhorou o tratamento de eventos e tem uma maior portabilidade, a diferença com relação ao nome das classes está na presença da letra J antes do início do nome. Por exemplo a classe Button (AWT) em SWING JButton. </li></ul><ul><li>Todas as classes do swing são extensões do pacote AWT, que por sua vez são extensões da Object. </li></ul>
  4. 4. A estrutura hierárquica AWT e Swing <ul><li>Os retângulos sombreados representam os controles da AWT. </li></ul>JWindow Dialog Frame JLabel AbstractButton JPanel JRootPane JDialog JFrame JButton Window Jcomponent Container Component
  5. 5. A classe JOptionPane <ul><li>Através da classe JOptionPane é fácil exibir uma caixa de diálogo padrão que induza o usuário a um valor ou o informa de alguma coisa. </li></ul><ul><li>A classe aparenta ser complexa devido ao grande número de métodos, porém a quase totalidade das chamadas é constituída de métodos estáticos . </li></ul><ul><li>Na sua forma mais básica, ela exibe uma linha de mensagem e um botão rotulado com “OK”. </li></ul><ul><li>Uma vez que o diálogo tenha sido exibido, ele fica na tela até o usuário pressionar o botão “OK”. Enquanto o diálogo continuar na tela, o usuário não poderá interagir com mais nada na aplicação. </li></ul>
  6. 6. A classe JOptionPane <ul><li>A aparência de uma das caixas de diálogo é similar à figura abaixo: </li></ul>ícone mensagem valor de entrada botões opcionais título da janela
  7. 7. A classe JOptionPane <ul><li>Existem quatro tipos padrão de caixas de diálogo, cujos detalhes serão tratados individualmente nas seguintes descrições: </li></ul><ul><li>MessageDialog - caixa de diálogo que apresenta uma mensagem, possibilitando acrescentar ícones de alerta ao usuário; </li></ul><ul><li>ConfirmDialog - caixa de diálogo que além de emitir uma mensagem, possibilita ao usuário responder a uma pergunta; </li></ul><ul><li>InputDialog - caixa de diálogo que além de emitir uma mensagem, permite a entrada de um texto; </li></ul><ul><li>OptionDialog - caixa de diálogo que abrange os três anteriores. </li></ul>
  8. 8. Exibindo a saída em uma janela ou caixa de diálogo <ul><li>Utilizando a classe JOptionPane do pacote swing. </li></ul>Barra de título O botão OK permite o usuário fechar a caixa de diálogo A região reservada ao diálogo de mensagem Ícone apropriado
  9. 9. Tipos de diálogo de mensagem <ul><li>JOptionPane. ERROR_MESSAGE </li></ul><ul><li>JOptionPane. INFORMATION_ MESSAGE </li></ul><ul><li>JOptionPane. WARNING_MESSAGE </li></ul><ul><li>JOptionPane.QUESTION_MESSAGE </li></ul><ul><li>JOptionPane.PLAIN_MESSAGE </li></ul>Exibe um diálogo que indica um erro. Exibe um diálogo informacional. Exibe um diálogo de advertência. Exibe um diálogo que impõe uma pergunta ao usuário. Em botões Yes ou NO. Exibe um diálogo somente com mensagem. i ! ? Sem ícone Tipo Ícone Descrição
  10. 10. A classe JOptionPane <ul><li>Constantes para tipos de mensagens: ERROR_MESSAGE </li></ul><ul><li>INFORMATION_MESSAGE WARNING_MESSAGE </li></ul><ul><li>QUESTION_MESSAGE PLAIN_MESSAGE </li></ul><ul><li>Constantes para opções de botões: YES_NO_OPTION YES_NO_CANCEL_OPTION </li></ul><ul><li>OK_CANCEL_OPTION </li></ul><ul><li>Constantes inteiras de retorno: </li></ul><ul><li>JOptionPane.YES_OPTION </li></ul><ul><li>JOptionPane.NO_OPTION </li></ul><ul><li>JOptionPane.CANCEL_OPTION </li></ul><ul><li>JOptionPane.OK_OPTION JOptionPane.CLOSED_OPTION </li></ul>
  11. 11. Exemplo MessageDialog <ul><li>import javax.swing.JOptionPane; </li></ul><ul><li>public class TesteMessageDialog </li></ul><ul><li>{ </li></ul><ul><li>public static void main (String [] args) </li></ul><ul><li>{ </li></ul><ul><li>JOptionPane.showMessageDialog(null, </li></ul><ul><li>&quot;Hello Internet gráfico!&quot;, //Mensagem </li></ul><ul><li>&quot;Primeiro Programa Gráfico&quot;, //Título </li></ul><ul><li>JOptionPane.INFORMATION_MESSAGE); //tipo de mensagem </li></ul><ul><li>System.exit(0); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  12. 12. Primeiro programa gráfico - cont. <ul><li>O resultado: </li></ul>
  13. 13. Exemplo ConfirmDialog <ul><li>import javax.swing.JOptionPane; </li></ul><ul><li>public class TesteConfirmDialog </li></ul><ul><li>{ </li></ul><ul><li>public static void main (String [] args) </li></ul><ul><li>{ </li></ul><ul><li>JOptionPane.showConfirmDialog(null, </li></ul><ul><li> &quot;Escolha uma opção&quot;, </li></ul><ul><li> &quot;Diálogo de escolha&quot;, </li></ul><ul><li> JOptionPane.YES_NO_OPTION); </li></ul><ul><li>System.exit(0); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>Obs : Retorna um inteiro (0- yes 1-no 2- cancel) </li></ul>
  14. 14. Resultado do ConfirmDialog
  15. 15. Exemplo ConfirmDialog <ul><li>import javax.swing.JOptionPane; </li></ul><ul><li>public class TesteJInputDialog </li></ul><ul><li>{ </li></ul><ul><li>public static void main (String [] args) </li></ul><ul><li>{ </li></ul><ul><li> String valor=&quot;&quot;; </li></ul><ul><li> valor=JOptionPane.showInputDialog(null, </li></ul><ul><li> &quot;Digite um valor&quot;, </li></ul><ul><li> &quot;Input&quot;, </li></ul><ul><li> JOptionPane.INFORMATION_MESSAGE); </li></ul><ul><li> System.exit(0); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  16. 16. Resultado do InputDialog
  17. 17. Exemplo OptionDialog <ul><li>import javax.swing.JOptionPane; </li></ul><ul><li>public class TesteJOptionPane </li></ul><ul><li>{ </li></ul><ul><li>public static void main (String [] args) </li></ul><ul><li>{ </li></ul><ul><li> String [] escolha={&quot;Entre 1 e 20 anos&quot;,&quot;Entre 21 e 40 anos&quot;,&quot;Mais de 40 anos&quot;}; </li></ul><ul><li> int resp; </li></ul><ul><li> resp=JOptionPane.showOptionDialog(null, &quot;Qual sua idade?&quot;, &quot;Idade&quot;, </li></ul><ul><li> 0, JOptionPane.INFORMATION_MESSAGE,null, </li></ul><ul><li> escolha, </li></ul><ul><li> escolha[0]); </li></ul><ul><li> System.exit(0); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  18. 18. Resultado do OptionDialog
  19. 19. JOptionPane - Variações <ul><li>Personaliza mensagem dos botões </li></ul><ul><li>Object[] options = { &quot;OK&quot;, &quot;CANCELA&quot; }; </li></ul><ul><li>JOptionPane.showOptionDialog(null, “Continua?&quot;, &quot;Warning&quot;, JOptionPane. YES_NO_OPTION , JOptionPane.WARNING_MESSAGE, null, options, options[0]); </li></ul><ul><li>Pré-define valores de entrada em uma caixa comboBox </li></ul><ul><li>Object[] valoresPossiveis= { “Um&quot;, “Dois&quot;, “Três&quot; }; </li></ul><ul><li>Object selectedValue = JOptionPane.showInputDialog( </li></ul><ul><ul><li>null,“Escolha um&quot;, &quot;Input&quot;, </li></ul></ul><ul><li>JOptionPane.INFORMATION_MESSAGE, null, </li></ul><ul><li>valoresPossiveis,valoresPossiveis[0]); </li></ul>
  20. 20. Exercícios (Revisão) <ul><li>Utilizando a classe JOptionPane, resolva os exercícios abaixo: </li></ul><ul><li>1) Faça um programa em Java que receba a quantidade e o valor de um produto, vendido, ao final o programa deverá exibir o total recebido pela venda do produto. </li></ul><ul><li>2) Crie um programa que receba a largura e o comprimento de um lote de terra e mostre a área total existente. </li></ul><ul><li>3) Faça um programa em JAVA que leia 4 (quatro) números inteiros, e mostre o maior entre eles; </li></ul><ul><li>4) Faça um programa em JAVA que apresente a série de Fibonacci até o décimo quinto termo; </li></ul><ul><li>5) Faça um programa em JAVA que leia um número natural e calcule o seu fatorial; </li></ul><ul><li>6) Faça um programa que apresente o total da soma dos cem primeiros números inteiros. </li></ul><ul><li>7) Faça um aplicativo que calcule o produto dos inteiros ímpares de 1 a 15 e exiba o resultado na tela. </li></ul><ul><li>8) Elabore um programa JAVA que leia o valor de dois números inteiros e a operação aritmética desejada; calcule, então, a resposta adequada. Utilize os símbolos da tabela a seguir para ler qual a operação aritmética desejada. </li></ul><ul><li>Símbolo Operação aritmética </li></ul><ul><li>+ Adição </li></ul><ul><li>- Subtração </li></ul><ul><li>* Multiplicação </li></ul><ul><li>/ Divisão </li></ul><ul><li>Obs: utilize para escolha da operação o método showInputDialog (ComboBox). </li></ul>
  21. 21. Elementos Gráficos <ul><li>Os elementos chaves de uma interface gráfica em Java são: </li></ul><ul><ul><ul><li>Componentes gráficos (botões etc.) </li></ul></ul></ul><ul><ul><ul><li>Gerenciadores de layout </li></ul></ul></ul><ul><ul><ul><li>Processamento de eventos </li></ul></ul></ul><ul><li>Componentes gráficos, tais como campo texto e botões, são elementos que o usuário manipula com o mouse ou com o teclado </li></ul><ul><li>Gerenciadores de layout governam a maneira pela qual os componentes aparecem na tela </li></ul><ul><li>Eventos assinalam ações do usuário consideradas importantes, como o click de um mouse em cima de um botão </li></ul>
  22. 22. Programação Dirigida por Eventos <ul><li>Programas Java devem responder a eventos gerados por componentes gráficos indicando que ações específicas ocorreram sobre tais componentes </li></ul><ul><li>Uma categoria especial de classes, chamadas listeners , que ficam a espera de eventos </li></ul><ul><li>Portanto, um programa cliente Java é, geralmente, composto por: </li></ul><ul><ul><ul><li>o código representando a interface gráfica com o usuário </li></ul></ul></ul><ul><ul><ul><li>listeners escutando eventos </li></ul></ul></ul><ul><ul><ul><li>código que respondem a eventos </li></ul></ul></ul>
  23. 23. Diretivas <ul><li>Todas as classes que serão abordadas neste capítulo necessitam de diversas classes externas, tanto do pacote swing quanto do pacote AWT. Por este motivo todos os programas terão três linhas com a diretiva import apontando para as classes externas, conforme as declarações abaixo: </li></ul><ul><li>- import java.awt.*; -> permite a utilização de diversas classes do pacote AWT, além de possuir uma série de constantes numéricas; </li></ul><ul><li>- import java.awt.event.*; -> usado para o processamento dos eventos que ocorrerão na janela, tais como: click do mause, ENTER do campo texto, etc; </li></ul><ul><li>- import javax.swing.*; -> permite a utilização de diversas classes o pacote swing. </li></ul>
  24. 24. Component <ul><li>A classe Component representa um objeto que tenha uma representação gráfica, como botões, campos de textos, choices etc. Esta classe define o comportamento básico para a maioria dos componentes visuais do pacote AWT (todos os métodos definidos nesta classe estarão disponíveis para todos os componentes visuais do AWT, bem como todos os recipientes). </li></ul><ul><li>Ex.: método setVisible(boolean visibilidade) </li></ul><ul><ul><li>botao.setVisible(true); // faz um Button aparecer no Container </li></ul></ul><ul><ul><li>janela.setVisible(false); // faz um Frame desaparecer </li></ul></ul>
  25. 25. Criando aplicações gráficas <ul><li>A criação de interfaces gráficas AWT consiste basicamente na criação (instância) de objetos do tipo Component (botões, textos etc.), na criação de recipientes ou objetos da classe Container (janelas, paineis etc.) para receber os componentes criados e na adição dos componentes aos recipientes, com base num sistema de coordenadas (especificando a localização da inserção) ou via utilização de gerentes de layouts que se encarregam de definir a localização e aspecto visual dos componentes inseridos nos recipientes. </li></ul>
  26. 26. Containers <ul><li>Um container é uma categoria especial de componente gráfico que pode conter outros componentes ou mesmo outros containers. </li></ul><ul><li>Todos os containers são componentes, mas nem todos os componentes são containers. </li></ul><ul><li>Uma applet, uma janela e um painel são exemplos de container. </li></ul><ul><li>Um container (painel) pode ser inserido dentro de outro. </li></ul><ul><li>Cada container possui associado um gerenciador de layout para controlar a maneira pela qual seus componentes serão mostrados (tamanho e posição). </li></ul>
  27. 27. Frame <ul><li>Um Frame é uma janela com uma barra de título e uma borda . </li></ul><ul><li>A classe Frame especializa a classe Window, que por sua vez, especializa a classe container. </li></ul><ul><li>A classe Frame implementa a interface MenuContainer, logo uma frame pode ter uma barra de menu associada a ela. </li></ul><ul><li>Frames são geralmente usadas para construir aplicações, mas também podem ser usadas com applets. </li></ul>
  28. 28. <ul><li>. </li></ul>JFrame
  29. 29. <ul><li>Construtor Operação </li></ul><ul><li>JFrame() Constrói uma nova instância de Frame que é inicialmente invisível. </li></ul><ul><li>JFrame(String t) Constrói uma nova instância de Frame que é inicialmente invisível, com o título passado como parâmetro. </li></ul>JFrame
  30. 30. <ul><li>Método Uso </li></ul><ul><li>setTitle(String t) Atribui um título, passado como parâmetro, ao objeto Frame. </li></ul><ul><li>setResizable(boolean b) Permite, ou não, que o usuário modifique o tamanho do Frame. </li></ul><ul><li>setVisible(boolean b) Torna, ou não, o Frame visível </li></ul><ul><li>setLocation(int,int ) Localização do Frame </li></ul><ul><li>....... </li></ul>JFrame
  31. 31. <ul><li>Deve-se usar pack( ) ou setSize(int,int) em um Frame antes que ele seja mostrado pela primeira vez. Caso contrário, somente a barra de título da janela aparecerá na tela. </li></ul><ul><li>Em geral, preferível utilizar o pack do que o setSize: </li></ul><ul><ul><li>pack delega para o gerenciador de layout a mudança no tamanho da janela. </li></ul></ul><ul><ul><li>com o gerenciador de layout adquire-se melhor independência de plataforma. </li></ul></ul>JFrame
  32. 32. <ul><li>import javax.swing.*; </li></ul><ul><li>public class JFrameBasico extends JFrame { </li></ul><ul><li>public static void main(String[] args) { </li></ul><ul><li> JFrameBasico jfb = new JFrameBasico (&quot;Tela Simples&quot;); </li></ul><ul><li>} </li></ul><ul><li>JFrameBasico (String titulo) { </li></ul><ul><li>setTitle(titulo); </li></ul><ul><li>setSize(250, 200); </li></ul><ul><li>setVisible(true); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>JFrame - exemplo
  33. 33. JFrame - resultado
  34. 34. <ul><li>A classe JPanel (painel) é uma sub-classe de JComponent. </li></ul><ul><li>Tem o propósito de agrupar componentes para serem posteriormente inseridos em outro container. </li></ul><ul><li>Permitem a criação de layouts sofisticados. </li></ul><ul><li>podem conter componentes incluindo outros painéis. </li></ul><ul><li>Utiliza o gerente de layout FlowLayout como padrão. </li></ul>JPanel
  35. 35. <ul><li>Construtor Operação </li></ul><ul><li>JPanel() Constrói uma nova instância de um painel que é inicialmente invisível. </li></ul><ul><li>JPanel(LayoutManager l) Constrói uma nova instância de um painel contendo um gerente de layout específico. </li></ul>JPanel
  36. 36. <ul><li>O exemplo a seguir mostra a criação de um panel que pode ser usado para inserir novos componentes. </li></ul><ul><li>Obs.: lembre-se que um panel é uma subclasse da classe JComponent, logo poderá utilizar o método add(Component c) para inserir algum componente internamente (o mesmo vale para objetos da classe JFrame !). </li></ul>JPanel
  37. 37. JPanel - exemplo import javax.swing.*; class JFrameBasico1{ public static void main(String args[]){ JPanel jpanel=new JPanel( ); JButton b=new JButton(&quot;Botão&quot;); jpanel.add(b); JFrame f=new JFrame(); f.getContentPane().add(jpanel); f.pack(); f.setVisible(true); } }
  38. 38. Inclusão de novos componentes JLabel <ul><li>Um área onde textos não editáveis e imagens podem ser mostrados </li></ul><ul><li>Rótulos são usados para informações ou instruções textuais na interface gráfica </li></ul><ul><li>Um rótulo imagem mostra texto não editável na posição selecionada </li></ul><ul><li>Uma vez criado um rótulo, programas raramente modificam seu conteúdo </li></ul><ul><li>Sintaxe : </li></ul><ul><li>Jlabel <nome do label>=new Jlabel (“<texto do label>”,Jlabel.<alinhamento>) </li></ul>
  39. 39. JLabel - métodos <ul><li>Construtores </li></ul><ul><li>public JLabel() </li></ul><ul><li>public JLabel (String s) </li></ul><ul><li>public JLabel (String s, int alignment) </li></ul><ul><li>public JLabel(String text, Icon icon,int horizontalAlignment) </li></ul><ul><li>public JLabel(Icon icon, int horizontalAlignment) </li></ul><ul><li>Outros métodos </li></ul><ul><li>getText() Obtém o texto do label </li></ul><ul><li>setText() Especifica o texto do label </li></ul><ul><li>... </li></ul><ul><li>Constantes de alinhamento: </li></ul><ul><ul><li>SwingConstants.LEFT </li></ul></ul><ul><ul><li>SwingConstants.CENTER </li></ul></ul><ul><ul><li>SwingConstants.RIGHT </li></ul></ul>
  40. 40. JLabel - exemplo import java.awt.*; import javax.swing.*; public class TesteLabel { public static void main(String[] args) { JFrame fr = new JFrame(); JLabel lb = new JLabel(&quot;Texto&quot;, new ImageIcon(&quot;duke.gif&quot;), SwingConstants.CENTER); lb.setFont(new Font(&quot;Serif&quot;,Font.BOLD,20)); lb.setForeground(Color.black); fr.getContentPane().add(lb); fr.pack(); fr.setVisible(true); } }
  41. 41. Botões <ul><li>O pacote javax.swing suporta os seguintes tipos de botões: </li></ul><ul><ul><ul><li>JButton Botão comum </li></ul></ul></ul><ul><ul><ul><li>JCheckBox Botões de seleção independentes </li></ul></ul></ul><ul><ul><ul><li>JRadioButton Botões agrupados para seleção </li></ul></ul></ul><ul><ul><ul><li>JMenuItem Item de menu no formato de botão </li></ul></ul></ul><ul><ul><ul><li>JCheckBox ou JRadioButton. </li></ul></ul></ul>
  42. 42. JButton <ul><li>É subclasse de AbstractButton e Jcomponent. </li></ul><ul><li>public JButton( ) </li></ul><ul><ul><li>constrói um objeto do tipo Botão sem texto. </li></ul></ul><ul><li>public JButton(String texto) </li></ul><ul><ul><li>constrói um objeto Botão com o texto especificado . </li></ul></ul><ul><li>public JButton(Icon icon) </li></ul><ul><ul><li>constrói um objeto Botão com o ícone especificado. </li></ul></ul><ul><li>public JButton(String texto, Icon icon) </li></ul><ul><ul><li>constrói um objeto Botão com o texto especificado. </li></ul></ul>
  43. 43. JButton - métodos <ul><li>getText() </li></ul><ul><ul><li>retorna o String representando o texto vinculado ao botão. </li></ul></ul><ul><li>setText(String s) </li></ul><ul><ul><li>define um texto para representar o botão. </li></ul></ul><ul><li>getIcon() </li></ul><ul><ul><li>retorna o ícone vinculado ao botão. </li></ul></ul><ul><li>setIcon(Icon icon) </li></ul><ul><ul><li>define um ícone para ser mostrado pelo botão. </li></ul></ul><ul><li>setTooTipText(String s) </li></ul><ul><ul><li>possibilita atrelar uma mensagem ao botão, quando o ponteiro do mouse estaciona sobre o botão </li></ul></ul>
  44. 44. JButton – exemplo import javax.swing.*; import java.awt.*; public class TesteBotao { private JButton bsim; private JButton bnao; private JFrame janelaDemo; public static void main(String[] args) { TesteBotao t = new TesteBotao(); } public TesteBotao() { janelaDemo = new JFrame(&quot;Botões&quot;); janelaDemo.getContentPane().setLayout(new FlowLayout()); bsim= new JButton(&quot;Sim&quot;); bnao= new JButton(&quot;Não&quot;); bsim.setToolTipText(&quot;Pressione Sim para sair&quot;); janelaDemo.getContentPane().add(bsim); janelaDemo.getContentPane().add(bnao); janelaDemo.pack(); janelaDemo.setVisible(true); } }
  45. 45. JTextField <ul><li>Um objeto da classe JTextField é um campo texto na forma de uma linha na qual textos podem ser digitados pelo usuário através do teclado. </li></ul><ul><li>A classe JTextField é uma sub-classe de JTextComponent, portanto pode-se aplicar nesta todos os métodos da classe JTextComponent. </li></ul>
  46. 46. JTextField - métodos <ul><li>Construtores </li></ul><ul><li>public JTextField() </li></ul><ul><ul><li>constrói um objeto do tipo campo de texto. </li></ul></ul><ul><li>public JTextField(int colunas) </li></ul><ul><ul><li>constrói um objeto campo de texto vazio com o número especificado de colunas. </li></ul></ul><ul><li>public JTextField(String texto) </li></ul><ul><ul><li>constrói um objeto campo de texto com o texto fornecido no parâmetro texto. </li></ul></ul><ul><li>public JTextField(String s, int colunas) </li></ul><ul><ul><li>constrói um objeto campo de texto com o texto fornecido no parâmetro texto com o número especificado de colunas. </li></ul></ul><ul><li>Outros métodos </li></ul><ul><li>public String getText () - retorna o que foi digitado para o campo </li></ul><ul><li>public void setText (String t) - atribui uma string para o campo </li></ul><ul><li>...... </li></ul>
  47. 47. JTextField – exemplo import javax.swing.*; import java.awt.*; public class TesteJTextField { private JTextField jtfTeste; private JFrame janelaDemo; public static void main(String[] args) { TesteJTextField t = new TesteJTextField(); } public TesteJTextField() { String t=&quot;&quot;; janelaDemo = new JFrame(&quot;Campo Texto&quot;); janelaDemo.getContentPane().setLayout(new FlowLayout()); jtfTeste= new JTextField(10); janelaDemo.getContentPane().add(jtfTeste); janelaDemo.pack(); janelaDemo.setVisible(true); } }
  48. 48. JPasswordField <ul><li>O objetivo desta classe é incluir caixas de senha nos frames. </li></ul><ul><li>O funcionamento desta classe é praticamente o mesmo da classe JTextField. A diferença é que o caracter digitado é substituído por outro caracter para esconder a senha digitada. </li></ul><ul><li>O caracter default é “*”, entretanto qualquer caracter pode ser definido através do método setEchoChar(char). </li></ul>
  49. 49. JPasswordField – exemplo import java.awt.*; import javax.swing.*; public class TestePasswd extends JFrame{ private JPasswordField p1; public TestePasswd() { setTitle(&quot;Senha&quot;); p1=new JPasswordField(); getContentPane().add(p1); pack(); setVisible(true); } public static void main(String[] args) { TestePasswd t = new TestePasswd(); } }
  50. 50. JComboBox <ul><li>É herança direta de JComponent . </li></ul><ul><li>Um JComboBox é um componente visual que possibilita a manipulação de coleções de objetos permitindo ao usuário selecionar apenas um objeto da coleção. Cada objeto inserido no JComboBox é representado visualmente pela String retornada pelo método toString(). </li></ul><ul><li>Construtores </li></ul><ul><li>public JComboBox(Object[] items) </li></ul><ul><ul><li>Cria um objeto JComboBox que recebe seus itens de um array de objetos. O objeto JComboBox utilizará o método toString de cada objeto do array. </li></ul></ul><ul><li>public JComboBox() </li></ul><ul><ul><li>Cria um objeto JComboBox com um modelo de dados padrão (uma lista de objetos vazia). </li></ul></ul>
  51. 51. <ul><li>public Object getSelectedItem() </li></ul><ul><ul><li>Retorna o item correntemente selecionado. </li></ul></ul><ul><li>public int getSelectedIndex() </li></ul><ul><ul><li>Retorna o posicional do item correntemente selecionado. </li></ul></ul><ul><li>public void addItem(Object anObject) </li></ul><ul><ul><li>Adiciona um elemento na lista padrão (usado quando o JComboBox é criado com construtor vazio). </li></ul></ul><ul><li>public void insertItemAt(Object anObject, int index) </li></ul><ul><ul><li>Insere um elemento na lista padrão na posição informada pelo índice (usado quando o JComboBox é criado com construtor vazio). </li></ul></ul><ul><li>public Object getItemAt(int index) </li></ul><ul><ul><li>Retorna o objeto referente ao elemento posicionado no índice fornecido. </li></ul></ul><ul><li>..... </li></ul>JComboBox Métodos
  52. 52. JComboBox– exemplo import java.awt.*; import javax.swing.*; public class TesteJComboBox extends JFrame{ private JComboBox lista; public TesteJComboBox () { String[] data = {&quot;um&quot;, &quot;dois&quot;, &quot;três&quot;, &quot;quatro&quot;}; setTitle(&quot;Lista&quot;); lista=new JComboBox(data); JScrollPane sp=new JScrollPane(lista); getContentPane().add(sp); getContentPane().add(lista); pack(); setVisible(true); } public static void main(String[] args) { TesteJComboBox t = new TesteJComboBox(); } }
  53. 53. JCheckBox <ul><li>É subclasse de JToggleButton, AbstractButton e JComponent. </li></ul><ul><li>Um JCheckBox pode ter dois estados: ligado ou desligado. </li></ul><ul><li>Um conjunto de checkboxes podem ser agrupados através da classe ButtonGroup. Neste caso, a seleção é mutuamente exclusiva. </li></ul>
  54. 54. J CheckBox <ul><li>Construtores Uso </li></ul><ul><li>JCheckBox(String label) Cria um Checkbox desligado, com o label especificado. </li></ul><ul><li>JCheckBox(String label,boolean state) </li></ul><ul><li>Cria um Checkbox ligado ou desligado, de </li></ul><ul><li>acordo com a variável booleana state e com </li></ul><ul><li>o label especificado. </li></ul><ul><li>JCheckBox(Icon icon, boolean state) </li></ul><ul><li>Cria um Checkbox ligado ou desligado, de </li></ul><ul><li>acordo com a variável booleana state, com </li></ul><ul><li>o ícone especificado. </li></ul><ul><li>Métodos </li></ul><ul><li>isSelected() Obtém o estado do checkbox, retornando </li></ul><ul><li>verdadeiro ou falso </li></ul><ul><li>setSelected(booleam b) Especifica o estado do chekbox </li></ul>
  55. 55. import javax.swing.*; class TesteJCheckBox extends JFrame{ private JCheckBox jcb; public static void main(String args[]){ TesteJCheckBox tcb= new TesteJCheckBox(&quot;Teste de JCheckBox&quot;); } TesteJCheckBox(String titulo){ setTitle(titulo); String estado=&quot;&quot;; jcb=new JCheckBox(&quot;Estado&quot;); jcb.setSelected(true); if(jcb.isSelected()) estado=&quot;ligado&quot;; else estado=&quot;desligado&quot;; getContentPane().add(jcb); setVisible(true); pack(); } } JCheckBox - exemplo
  56. 56. JRadioButton <ul><li>É subclasse de JToggleButton, AbstractButton e JComponent. </li></ul><ul><li>Pode ter dois estados : ligado e desligado. </li></ul><ul><li>Podem ser agrupados pela classe ButtonGroup. Neste caso, a seleção é mutuamente exclusiva. </li></ul>
  57. 57. import javax.swing.*; class TesteJRadioButton extends JFrame{ private JRadioButton jrbm; private JRadioButton jrbf; public static void main(String args[]){ TesteJRadioButton trb= new TesteJRadioButton(&quot;Teste de JRadioButton&quot;); } TesteJRadioButton(String titulo){ setTitle(titulo); JPanel painel=new JPanel(); jrbm=new JRadioButton(&quot;Masculino&quot;); jrbf=new JRadioButton(&quot;Feminino&quot;); ButtonGroup grupo = new ButtonGroup (); grupo.add(jrbm); grupo.add(jrbf); painel.add(jrbm); painel.add(jrbf); getContentPane().add(painel); setVisible(true); pack(); } } JRadioButton
  58. 58. JTextArea <ul><li>Um objeto da classe JTextArea é um campo texto na forma de várias linhas nas quais textos podem ser digitados pelo usuário através do teclado. </li></ul><ul><li>A classe JTextArea é também uma sub-classe de JTextComponent, portanto pode-se aplicar nesta todos os métodos da classe JTextComponent. </li></ul>
  59. 59. JTextArea - construtores <ul><li>public JTextArea() </li></ul><ul><ul><li>constrói um objeto do tipo campo de texto com possibilidade para várias linhas. </li></ul></ul><ul><li>public JTextArea(int linhas, int colunas) </li></ul><ul><ul><li>constrói um objeto JTextArea vazio com o número especificado de colunas e linhas. </li></ul></ul><ul><li>public JTextArea(String texto) </li></ul><ul><ul><li>constrói um objeto JTextArea com o texto fornecido no parâmetro texto. </li></ul></ul><ul><li>public JTextArea(String texto , int linhas, int col) </li></ul><ul><ul><li>constrói um objeto JTextArea com o texto especificado e número especificado de colunas e linhas. </li></ul></ul>
  60. 60. JTextArea - métodos <ul><li>public String getText() </li></ul><ul><ul><li>retorna o que foi digitado para o campo </li></ul></ul><ul><li>public void setText(String t) </li></ul><ul><ul><li>atribui uma string para o campo </li></ul></ul><ul><li>public void setColumns(int c) </li></ul><ul><ul><li>define o número de colunas visíveis para o objeto JTextArea. </li></ul></ul><ul><li>public int g etColumns () </li></ul><ul><ul><li>devolve o número de colunas visíveis já definidas para o objeto JTextArea. </li></ul></ul><ul><li>public void s etRows (int r) </li></ul><ul><ul><li>define o número de linhas visíveis para o objeto JTextArea. </li></ul></ul><ul><li>public int g etRows () </li></ul><ul><ul><li>devolve o número de linhas visíveis já definidas para o objeto JTextArea. </li></ul></ul><ul><li>append( String str) </li></ul><ul><ul><li>adiciona o texto no final do JTextArea. </li></ul></ul><ul><li>insert ( String str , int pos ) </li></ul><ul><ul><li>insere o texto na posição especificada. </li></ul></ul><ul><li>...... </li></ul>
  61. 61. JTextArea - exemplo import java.awt.*; import javax.swing.*; public class TextAreaDemo { public TextAreaDemo() { JLabel lNome = new JLabel(&quot;Observação:&quot;); JTextArea tArea = new JTextArea(&quot;&quot;,5,30); JScrollPane sp = new JScrollPane(tArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); JPanel painel = new JPanel(); JFrame janela = new JFrame(&quot;Teste do JTextArea&quot;); painel.add(lNome ); painel.add(sp ); janela.getContentPane().add(painel); janela.pack(); janela.setVisible(true); } public static void main(String[] args) { TextAreaDemo t = new TextAreaDemo(); } }
  62. 62. JMenuBar É subclasse de JComponent. O layout default é o BoxLayout. JMenuBar ( ) Constrói um objeto do tipo barra de menu. add ( JMenu c ) Adiciona o menu especificado ao final da barra de menu. Para atribuir a barra de menu ao JFrame desejado, basta utilizar o método da janela: void setJMenuBar ( JMenuBar  menubar)        
  63. 63. JMenu É subclasse de JMenuItem. Utilizada para criar os itens principais de menu ou submenus . JMenu ( ) Cria um menu principal ou submenu. Para atribuir um ícone, utilize setText(String s) . JMenu ( String s ) Cria um menu principal ou submenu com o texto especificado. Para atribuir um ícone, utilize setIcon(Icon i) . add ( String s ) Cria um item de menu com o texto especificado e o adiciona ao final do menu. add ( JMenuItem j ) Adiciona o item de menu especificado ao final da barra de menu. addSeparator ( ) Adiciona um separador como próximo (ou último) item do menu.
  64. 64. JMenuItem É subclasse de JAbstractButton, ou seja, os itens de menu são simplesmente botões . Construtores JMenu Item ( ) Cria um item de menu. JMenu Item ( String s ) Cria um item de menu com o texto especificado. JMenu Item ( String s, Icon i ) Cria um item de menu com o texto e ícone especificados. JMenu Item ( String s, int mnemonic ) Cria um item de menu com o texto e mnemônico especificados. Alguns métodos importantes : v oid setMnemonic ( int  mnem ô nic o )       -- Herdado de JAbstractButton, atribui uma tecla de acesso ao item de menu. ex.: itemDeMenu. setMnemonic (72); // char N. v oid setAccelerator ( KeyStroke  keyStroke) -- Atribui uma tecla de atalho para execução direta do item de menu. ex.: itemDeMenu. setAccelerator ( KeyStroke.getKeyStroke( KeyEvent.VK_B, ActionEvent.ALT_MASK)); *resultará na tecla de atalho ALT_B.
  65. 65. Passos para criar um menu 1. Criar primeiramente a JMenu Bar ( ) e atribuí-la ao JFrame desejado. 2. Criar os menus principais ou submenus do tipo JMenu ( ) e adicioná-los à barra de menu (JMenuBar) ou a um menu (Jmenu) como um novo item. 3. Criar os itens de menu do tipo JMenu Item ( ) e adicioná-los ao menu principal ou ao submenu correspondente (JMenu). 4. Se houver subitens de menu, repetir os passos 2 e 3.
  66. 66. JMenu - exemplo import javax.swing.*; public class TesteMenuBar extends JFrame{ private JMenuBar jmbBarraMenu; private JMenu jmArquivo; private JMenuItem jmiNovo; private JMenuItem jmiAbrir; private JMenuItem jmiFechar; private JMenuItem jmiSalvar; private JMenuItem jmiSair; public TesteMenuBar() { super(&quot;Teste de Menu&quot;); jmbBarraMenu=new JMenuBar(); setJMenuBar(jmbBarraMenu); jmArquivo=new JMenu(&quot;Arquivo&quot;); jmbBarraMenu.add(jmArquivo); jmiNovo=new JMenuItem(&quot;Novo&quot;); jmArquivo.add(jmiNovo); jmiAbrir=new JMenuItem(&quot;Abrir&quot;,new ImageIcon(&quot;open.gif&quot;)); jmArquivo.add(jmiAbrir); jmiAbrir.setMnemonic(65); jmiFechar=new JMenuItem(&quot;Fechar&quot;); jmArquivo.add(jmiFechar); jmiSalvar=new JMenuItem(&quot;Salvar&quot;); jmArquivo.add(jmiSalvar); jmiSair=new JMenuItem(&quot;Sair&quot;); jmArquivo.add(jmiSair); pack(); setVisible(true); } public static void main(String[] args) { TesteMenuBar t = new TesteMenuBar(); } }
  67. 67. Gerenciadores de Layout <ul><li>A aparência e estética da aplicação são extremamente importantes, pois a interface do usuário é o cartão de visita da aplicação. Os objetos devem estar distribuídos em harmonia pela janela, agrupados de tal forma que facilitem a compreensão e execução das tarefas por parte do usuário, reduzindo a quantidade de movimentos necessária à operação da aplicação. </li></ul><ul><li>Embora seja possível posicionar objetos em coordenadas fixas (x, y) , deve-se evitar essa prática em Java . </li></ul><ul><li>Is s o causa problemas de portabilidade: outras JVMs, GUIs e Window Managers terão fontes e outros elementos em tamanhos e proporções diferentes. </li></ul><ul><li>Há 6 gerenciadores de layout pré-definidos no pacote java.awt. * : </li></ul><ul><ul><ul><li>FlowLayout </li></ul></ul></ul><ul><ul><ul><li>GridLayout </li></ul></ul></ul><ul><ul><ul><li>BorderLayout </li></ul></ul></ul><ul><ul><ul><li>CardLayout </li></ul></ul></ul><ul><ul><ul><li>GridBagLayout </li></ul></ul></ul><ul><ul><ul><li>BoxLayout </li></ul></ul></ul>
  68. 68. Gerenciadores de Layout (cont.) <ul><li>Implicitamente, cada container possui um gerenciador de layout default associado. Assim, se não for declarado nenhum gerenciador de layout para o container, será usado o layout default. </li></ul><ul><li>Um programador pode também criar novos gerenciadores de layout. </li></ul><ul><li>Escolhendo um gerenciador de layout </li></ul><ul><li>Se você precisa mostrar alguns componentes utilizando os seus tamanhos naturais em uma linha, então use o FlowLayout. </li></ul><ul><li>Se você precisa mostrar componentes de mesmo tamanho em linhas e colunas, então use o GridLayout. </li></ul><ul><li>Se você precisa mostrar painéis alternativamente, então use o CardLayout. </li></ul><ul><li>Se você precisa mostrar componentes e espalhá-los utilizando todo espaço disponível, então utilize o BorderLayout ou GridBagLayout. </li></ul>
  69. 69. FlowLayout <ul><li>O FlowLayout é o layout default em painéis e applets. </li></ul><ul><li>O FlowLayout se constitui no mais simples gerenciador de layout da linguagem Java. Nele os componentes são dispostos da esquerda para a direita na ordem em aparecerem, isto é, na ordem em que os componentes são adicionados à janela pelo método add . Quando não existe mais espaço em uma linha é criada outra linha abaixo desta e este critério é usado em toda a janela. A distribuição dos objetos por meio do FlowLayout pode ser comparada à distribuição das palavras que um editor de texto qualquer faz. </li></ul>
  70. 70. FlowLayout <ul><li>Sintaxe utilizada para a definição do layout : </li></ul><ul><li>getContentPane().setLayout(new FlowLayout([Alinhamento, Espaçamento_horizontal, Espaçamento_vertical])) </li></ul><ul><li>Alinhamento - refere-se ao alinhamento que os componentes assumirão no momento em que forem inseridos no container, podendo assumir os seguintes valores inteiros: 0=esquerda, 1=centralizado, 2=direita. O alinhamento é opcional, e quando não especificado assume o valor 0. </li></ul><ul><li>Espaçamento_horizontal - refere-se à distância que será dada entre os objetos inseridos na mesma linha do container. O espaçamento horizontal é opcional e se não for especificado é considerado com 5 unidades. </li></ul><ul><li>Espaçamento_vertical - se refere à distância que será dada entre as linhas do container onde os objetos estão inseridos. O espaçamento é opcional e se não for especificado é considerado com 5 unidades. </li></ul><ul><li>Métodos Função </li></ul><ul><li>FlowLayout() Cria um layout padrão: alinhamento centralizado e espaçamento horizontal e vertical com 5 unidades. </li></ul><ul><li>FlowLayout(int) Cria um layout com alinhamento fornecido e espaçamentos com cinco unidades </li></ul><ul><li>FlowLayout(int,int,int) Cria um layout com o alinhamento, espaçamento horizontal e vertical fornecidos. </li></ul>
  71. 71. FlowLayout - exemplo import javax.swing.*; import java.awt.*; public class TesteFlowLayout extends JFrame { private JButton b1; private JButton b2; private JButton b3; private JButton b4; private JButton b5; public TesteFlowLayout() { super(&quot;Teste do FlowLayout&quot;); b1=new JButton(&quot;Botão 1&quot;); b2=new JButton(&quot;Botão 2&quot;); b3=new JButton(&quot;Botão 3&quot;); b4=new JButton(&quot;Botão 4&quot;); b5=new JButton(&quot;Botão 5&quot;); getContentPane().setLayout(new FlowLayout()); getContentPane().add(b1); getContentPane().add(b2); getContentPane().add(b3); getContentPane().add(b4); getContentPane().add(b5); pack(); setVisible(true); } public static void main(String[] args) { TesteFlowLayout t = new TesteFlowLayout(); } }
  72. 72. GridLayout <ul><li>O GridLayout é um gerenciador que divide um container num conjunto de células espalhadas numa grade retangular, de maneira que todas as células possuam a mesma direção. Com o GridLayout uma janela pode ser dividida em linhas e colunas de acordo com os argumentos especificados no momento de sua criação. Os componentes são dispostos na ordem em que aparecem, sendo inseridos na grade da esquerda para a direita e de cima para baixo. </li></ul>
  73. 73. GridLayout <ul><li>Sintaxe utilizada para a definição do layout : </li></ul><ul><li>getContentPane().setLayout(new GridLayout([Número_de_linhas, Número_de_colunas, Espaçamento_horizontal, Espaçamento_vertical])) </li></ul><ul><li>Número_de_linhas - refere-se à quantidade de linhas que a grade irá conter. Se não for especificado, assume o valor 1. </li></ul><ul><li>Número_de_colunas - refere-se à quantidade de linhas que a grade irá conter. Se não for especificado, assume o valor 1. </li></ul><ul><li>Espaçamento_horizontal - refere-se à distância que será dada entre os objetos inseridos na mesma linha do container. O espaçamento horizontal é opcional e se não for especificado é considerado com 5 unidades. </li></ul><ul><li>Espaçamento_vertical - se refere à distância que será dada entre as linhas do container onde os objetos estão inseridos. O espaçamento é opcional e se não for especificado é considerado com 5 unidades. </li></ul><ul><li>Métodos Função </li></ul><ul><li>GridLayout() Cria um layout com uma linha e uma coluna </li></ul><ul><li>GridLayout(int,int) Cria um layout com o número de linhas e colunas especificados. </li></ul><ul><li>GridLayout(int,int,int,int) Cria um layout com o número de linhas e colunas especificados e com os espaçamentos especificados. </li></ul>
  74. 74. GridLayout - exemplo import javax.swing.*; import java.awt.*; public class TesteGridLayout extends JFrame { private JButton b1; private JButton b2; private JButton b3; private JButton b4; private JButton b5; public TesteGridLayout () { super(&quot;Teste do GridLayout&quot;); b1=new JButton(&quot;Botão 1&quot;); b2=new JButton(&quot;Botão 2&quot;); b3=new JButton(&quot;Botão 3&quot;); b4=new JButton(&quot;Botão 4&quot;); b5=new JButton(&quot;Botão 5&quot;); getContentPane().setLayout(new GridLayout(3,5,5,5)); getContentPane().add(b1); getContentPane().add(b2); getContentPane().add(b3); getContentPane().add(b4); getContentPane().add(b5); pack(); setVisible(true); } public static void main(String[] args) { TesteGridLayout t = new TesteGridLayout (); } }
  75. 75. BorderLayout <ul><li>O BorderLayout é um gerenciador que divide um container em cinco regiões distintas: north (região superior), south (região inferior), west (região à esquerda), east (região à direita) e center (região central). Diferentemente dos gerenciadores flowLayout e GridLayout, a ordem com que os componentes são inseridos é irrelevantes, uma vez que o container é dividido em regiões fixas. Em cada região cabe apenas um componente, ou seja, como o container é dividido em cinco regiões, apenas cinco componentes podem ser inseridos nesse layout. </li></ul>
  76. 76. BorderLayout <ul><li>Sintaxe utilizada para a definição do layout : </li></ul><ul><li>getContentPane().setLayout(new BorderLayout([Espaçamento_horizontal, Espaçamento_vertical])) </li></ul><ul><li>Espaçamento_horizontal - refere-se à distância que será dada entre os objetos inseridos na mesma linha do container. O espaçamento horizontal é opcional e se não for especificado é considerado com 5 unidades. </li></ul><ul><li>Espaçamento_vertical - se refere à distância que será dada entre as linhas do container onde os objetos estão inseridos. O espaçamento é opcional e se não for especificado é considerado com 5 unidades. </li></ul><ul><li>Métodos Função </li></ul><ul><li>BorderLayout() Cria um layout sem espaçamento entre as regiões </li></ul><ul><li>BorderLayout(int,int) Cria um layout com espaçamento horizontal e vertical entre as regiões </li></ul>
  77. 77. BorderLayout - exemplo import javax.swing.*; import java.awt.*; public class TesteBrderLayout extends JFrame { private JButton b1; private JButton b2; private JButton b3; private JButton b4; private JButton b5; public TesteBrderLayout() { super(&quot;Teste do GridLayout&quot;); b1=new JButton(&quot;Botão 1&quot;); b2=new JButton(&quot;Botão 2&quot;); b3=new JButton(&quot;Botão 3&quot;); b4=new JButton(&quot;Botão 4&quot;); b5=new JButton(&quot;Botão 5&quot;); getContentPane().setLayout(new BorderLayout()); getContentPane().add(&quot;North&quot;,b1); getContentPane().add(&quot;South&quot;,b2); getContentPane().add(&quot;West&quot;,b3); getContentPane().add(&quot;East&quot;,b4); getContentPane().add(&quot;Center&quot;,b5); pack(); setVisible(true); } public static void main(String[] args) { TesteBrderLayout t = new TesteBrderLayout(); } }
  78. 78. Exercício <ul><li>Usando as classes do pacote swing vistas neste capítulo, faça um programa em Java que tenha a seguinte interface: </li></ul>
  79. 79. Bibliografia <ul><ul><li>FURGERI, Sérgio. Java 2: Ensino didático: Desenvolvendo e Implementando Aplicações – </li></ul></ul><ul><ul><li>São Paulo: Érica, 372p. 2002. </li></ul></ul><ul><ul><li>TAMASSIA, R.; GOODRICH, M.T. Estrutura de Dados e Algoritmos em Java. Bookman, 2002. </li></ul></ul><ul><ul><li>DEITEL,H.M.; DEITEL, P.J. Java: Como Programar , Bookman, 2002. </li></ul></ul>

×