Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Os Objetos Visuais do Swing 2 Os Objetos Visuais do Swing • Os Objetos dos Container • A classe JFrame • Algumas Modificações 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 Os Objetos Visuais do Swing Prof. Gerson Rubin / Prof. Pedro L. S. Serra 3 GUI – Graphical User Interface As regras de usabilidade e o protótipo de tela devem ser definidos antes do desenvolvimento. Várias estratégias para implementação. Valida as entradas do usuário (formatação de campos). Informa aos usuários sobre problemas no sistema (erros de rede, indisponibilidade dos servidores). Responde a eventos do usuário (clique do mouse, arrastar e soltar, mudança de campo). A criação de telas com swing pode ser um trabalho cansativo. É recomendado que se utilize uma ferramenta para a criação de telas profissionais. 5 Os Objetos dos Containers • Um Container é um objeto visual ao qual é possível acrescentar outros objetos. • O próprio 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 também subclasses de Container. • JFrame é uma classe do pacote javax.swing que substituiu Frame do java.awt e não é derivada de JComponent. • JFrame é uma estrutura multicamada e permite muitos outros recursos não suportados pela classe Frame. • JFrame permite a contenção de outros objetos derivados de JComponent: JApplet, JWindow, JDialog e JInternalFrame. 6 Os Objetos dos Containers Hierarquia de Componentes A classe JComponent do javax.swing deriva de Container do java.awt. Todos os objetos visuais do swing derivam de JComponent, sendo também subclasses de Container. 7 Os Objetos dos Containers Hierarquia de Componentes A classe JComponent do javax.swing deriva de Container do java.awt. Todos os objetos visuais do swing derivam de JComponent, sendo também subclasses de Container. 8 Pacotes AWT e Swing • As classes Frame, Color e Dimension fazem parte do pacote AWT. • As classes do swing são extensões do pacote AWT. • A API do Swing traz uma série de componentes visuais prontos para uso: • Campos de texto e botões. Checkboxes, labels, tabelas. 9 A Classe JFrame • É a base sobre a qual serão desenvolvidas as interfaces visuais de usuário (GUI). • Exemplo 8_1: import javax.swing.*; public class Exemplo8_1 extends JFrame { Exemplo8_1() { setTitle("Descobrindo JFrame"); setBounds(200,150,400,300); setVisible(true); } public static void main(String arg[]) { new Exemplo8_1(); } } Posição x,y, largura e altura do Frame 10 A Classe JFrame • É a base sobre a qual serão desenvolvidas as interfaces visuais de usuário (GUI). • public class Exemplo8_1 extends Jframe • A palavra chave Extends permite realizar o principio da Herança que é um princípio da POO que permite a criação de novas classes a partir de outras previamente criadas. 11 A Classe JFrame • A API do Swing traz uma série de componentes visuais prontos para uso. São campos de texto, botões, checkboxes, labels, tabelas, árvores e muitos outros. JButton button = new JButton("OK:"); JTextField textField = new JTextField(20); JPanel panel = new JPanel(); panel.add(button); panel.add(textField); 12 A Classe JFrame • A API do Swing traz uma série de componentes visuais prontos para uso. São campos de texto, botões, checkboxes, labels, tabelas, árvores e muitos outros. JLabel label = new JLabel("Seu nome:"); JTextField textField = new JTextField(20); JPanel panel = new JPanel(); panel.add(label); panel.add(textField); Prof. Gerson Rubin / Prof. Pedro L. S. Serra 13 A Classe JFrame Exemplo8_2 A classe Color pertence ao pacote java.awt, o qual é importado no início do programa. A modificação da cor de fundo em um JFrame deve ser feita sobre o painel de conteúdos e permite então que seja aplicado o método, conforme segue: getContentPane ( ).setBackground(Color.orange) 14 Algumas modificações em JFrame: • O painel apresentado pela execução da classe JFrame assume, por default, o modelo do sistema operacional em que ele está instalado. • É possível, no entanto, alterar alguns detalhes desse padrão fazendo a chamada ao método: getRootPane( ).setWindowDecorationStyle( JRootPane.FILE_CHOOSER_DIALOG ); Exixtem nove constantes que alteram a aparência do quadro. • No caso “(JRootPane,NONE)” ou o valor numérico (0), a janela vai ficar com a aparência comum dos quadros do sistema operacional em uso. • Se for lançado o parâmetro “(JRootPane,FRAME)” , a tela vai assumir um padrão próprio da JVM, chamado JLF (Java Look and Feel) ou simplesmente aparência METAL. 1 – NONE 2 – FRAME 3 – INFORMATION_DIALOG 4 – ERROR_DIALOG 5 – COLOR_CHOOSER_DIALOG 6 – FILE_CHOOSER_DIALOG 7 – QUESTION_DIALOG 8 – WARNING_DIALOG 15 Algumas modificações em JFrame: • getRootPane( ).setWindowDecorationStyle( JRootPane.FILE_CHOOSER_DIALOG ); 16 Algumas modificações em JFrame: • getRootPane( ).setWindowDecorationStyle( JRootPane. INFORMATION_DIALOG); 17 JLF (Java Look and Feel) • O look-and-feel do Swing é único em todas as plataformas onde roda, seja ela Windows, Linux ou qualquer outra. • Isso implica que a aplicação terá exatamente a mesma interface (cores, tamanhos, etc) em qualquer sistema operacional. 18 JLF (Java Look and Feel) • UIManager.setLookAndFeel("com.sun.java.s wing.plaf.motif.MotifLookAndFeel"); 19 JLF (Java Look and Feel) • UIManager.setLookAndFeel("javax.swing.pl af.metal.MetalLookAndFeel"); 20 Algumas modificações em JFrame: • A operação de fechamento é executada pelo método: setDefaultCloseOperation( parâmetro ); o qual admite quatro parâmetros: • HIDE_ON_CLOSE ➔ oculta a janela (default na classe); • DO_NOTHING_ON_CLOSE ➔ não executa nenhuma ação (desativa o botão de fechamento); • DISPOSE_ON_CLOSE ➔ faz desaparecer a janela e libera os recursos da classe que estão sendo usados pela JVM; • EXIT_ON_CLOSE ➔ faz encerrar o aplicativo de uma forma equivalente ao uso de um System.exit(0); • setDefaultCloseOperation(EXIT_ON_CLOSE); 21 Algumas modificações em JFrame: • Pode-se ainda alterar as bordas do quadro por meio do método setBorder ( ) que pertence à RootPane. Sua chamada segue a sintaxe: getRootPane( ).setBorder (a classe que trata das bordas *) • Sua aplicação no Exemplo8_4 fica: getRootPane( ).setBorder(BorderFactory.createEtchedBorder(0)); 22 Swing container: • Todo componente Swing deve ser adicionado a um contêiner (Container) que administrará o agrupamento e exibição dos mesmos: JLabel label = new JLabel("Seu nome:"); JTextField textField = new JTextField(20); JPanel panel = new JPanel(); panel.add(label); panel.add(textField); 23 Swing JPanel em um JFrame • Swing para exibir o formulário, precisa-se colocar o Jpanel em uma janela. • Utiliza-se aqui a classe JFrame, que representa uma janela simples. JLabel label = new JLabel("Seu nome:"); JTextField textField = new JTextField(20); JPanel panel = new JPanel(); panel.add(label); panel.add(textField); JFrame frame = new JFrame("Meu primeiro formulário"); frame.add(panel); frame.pack(); frame.setVisible(true); 24 O Swing possui o conceito de Listeners (ouvintes) • Para ações diferenciadas como, por exemplo, recuperar o valor digitado pelo usuário para efetuar alguma operação, trabalha-se com eventos que são disparados pelo usuário. • No Swing isto é feito através de interfaces. Neste caso, o usuário pode disparar eventos ao digitar, ao clicar e ao passar o mouse, dentre outras. • O Swing possui o conceito de Listeners (ouvintes), quesão interfaces que implementamos com métodos para serem disparados por eventos. 25 A Classe NFrame: • Com algumas modificações na classe Exemplo8_4 criamos a classe NFrame, ou seja: 26 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(); } } 27 A Classe JLabel • Trata-se de um objeto que é uma caixa dentro da qual uma String representativa de uma mensagem é exibida. • O método setText define a mensagem que será exibida pelo label, ou seja: setText ( “ Este é um rótulo \”JLabel\” “) • O método setToolTipText está ligado a um evento do mouse. Quando está sobre a área do objeto Label, ele dispara a apresentação de uma pequena caixa contendo a mensagem (dica) digitada. Sua implementação é feita da forma: setToolTipText( “ Aqui você escreve uma rápida dica “) • Para posicionamento do objeto e dimensionamento pode-se usar os métodos setSize em conjunto com setLocation ou o método setBounds. 28 A Classe JLabel • Exemplo8_5 JLabel L1 = new JLabel(); this.L1 = L1; L1.setText("Este é um rótulo \"JLabel\""); L1.setSize(200,15); L1.setFont(F); L1.setLocation(105,5); L1.setToolTipText("Aqui voce escreve uma rapida dica"); L1.setForeground(Color.blue); 29 A Classe JTextField • Trata-se de uma caixa que permite a inclusão de um texto de apenas uma linha (via digitação do usuário). • Exemplo8_6: 30 A Classe JTextField • Os métodos principais dessa classe são: – setSize(int Width,int Height)➔ define a largura e altura do texto. – setLocation(int x,int y)➔ define as coordenadas x e y da posição do objeto na tela. – setBounds(int x,int y, int Width,int Height)➔ substitui os métodos anteriores – setText(String mensagem)➔ admite uma mensagem digitada pelo programador como um valor inicial ou como uma informação. – 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 usuário. 31 A Classe JPasswordField • É uma classe derivada de JTextField; • Serve para introdução de campos de senha no computador; • Segue os mesmos métodos de sua superclasse (JTextField), apenas acrescenta como um artifício opcional o método: setEchoChar( ‘ x ‘ ); • Exemplo8_6: 32 Eventos do Objeto JPasswordField • A Caixa de senha sozinha dentro do frame não tem utilidade nenhuma; • O programa necessita identificar uma senha e executar uma ação • É necessário uma interface chamada Ouvinte ou Listener que recebe um sinal do objeto e, como conseqüência , invoca os métodos correspondentes a ação ocorrida. • O Exemplo8_8 é uma subclasse de Exemplo8_7 e registra o campo de senha no ouvinte de eventos ActionListener por meio do método: Sx.addActionListener ( this ) ; 33 Eventos do Objeto JPasswordField (Senha Correta) Executa a Classe Auxiliar8_7( ) (Senha Errada) Apresenta informação na Caixa de Diálogos Após 3 tentativas erradas apresenta informação de saída do sistema
Compartilhar