JAVA Interface Grafica - Swing Professor Rafael Monteiro POO usando JAVA O pacote Swing não é um substituto do AWT ( Abstract Window Toolkit ), o pacote gráfico utilizado nas primeiras versões de java. Em vez disso, o Swing é visto como uma camada disposta sobre o AWT e que utiliza internamente os componentes da AWT. Diferentemente da AWT, onde alguns componentes gráficos utilizavam a capacidade de renderização da interfaces gráficas em que o aplicativo estava sendo executado, os componentes do Swing são todos escritos em puro java. Um componente do pacote Swing é reconhecido pela letra J antecedendo o nome do mesmo componente no pacote AWT. POO usando JAVA 2 Todas as classes do swing são extenções da classe AWT, que por sua vez, são extenções da classe java.lang.Object, a superclasse de todas as classes do Java. Existem três classes a serem utilizadas na criação de uma GUI: import java.awt.* permite a utilização de diversas classes do pacote AWT, além de possuir uma série de constantes numéricas. imoport java.awt.event usado para o processamento dos eventos que ocorrerão na janela, tais como: Click do Mouse, ENTER do campo texto, etc. import javax.Swing.* permite a utilização de diversas classes do pacote swing. POO usando JAVA 3 Frame é um componente do pacote AWT responsável pela criação de janeas, parecidas com as encontradas em aplicativos do ambiente Windows. O componente frame gera uma janela com barra de título, bordas e pode ter outros componentes em seu interior. Imagine o componente frame como uma folha de projeto em que são inseridos diversos objetos. Em conjunto com esses objetos, definidos no metodo construtor da classe, o componente frame gera uma visualização grafica de um determinado aplicativo. Esta classe estende diretamente a classe Frame do AWT. POO usando JAVA 4 As interfaces gráficas são elementos baseados em eventos. De uma maneira geral, eventos são interaçãao do usuário com a interface gráfica. Mover o mouse é um evento; fechar uma janela é um outro evento.nn Eventos ocorrem a todo instante nos aplicativos modernos. Continua... POO usando JAVA 5 Quando o usuário interage con um objeto da interface gráfica, um evento é enviado automaticamente para o programa na expectativa de que ele seja identificado e tratado e convenientemente tratado para produzir algum tipo de resposta à ação realizada sobre o objeto. POO usando JAVA 6 JWindow Window Component Dialog JDialog Frame JFrame Container JLabel Jcomponent AbstractButton JButton JPanel JRootPane Os retângulos sombreados representam os controles da AWT. POO usando JAVA 7 É possível utilizar alguns componentes básicos do Swing diretamente. Com o Swing não há mudanças fundamentais no modo como as aplicações são construídas. Pode-se criar a janela principal da aplicação, usar frames, componentes e gerenciadores de layout e é possível estabelecer conexão quase que da mesma forma nterfaces gráficas são elementos baseados em eventos. POO usando JAVA 8 import java.awt.*; import java.awt.event.*; import javax.swing.*; class Exemplo1 extends JFrame { Exemplo1() { setTitle("Minha primeira Janela em Java"); setSize(400,50); setLocation(150,150); setResizable(false); getContentPane().setBackground(Color.gray); String x = getTitle(); } Importação de Pacotes Extende de JFrame construtor - mesmo nome da classe titulo da Janela dimensoes da janela (Largura e Comprimento) canto esquerdo e topo da tela a janela não pode ser redimensionada cor de fundo da janela JPanel pane = new Jpanel(); pane.setBackground(newColor(180,180,180)); public static void main(String args[]) { add(pane); JFrame Janela=new Exemplo1(); declaração e inicialização do objeto Janela Janela.show(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); Mostra a Janela na tela Janela.setVisible(true); } } Continua... POO usando JAVA 9 Continua... POO usando JAVA import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Exemplo2 extends JFrame implements ActionListener { JButton b1,b2; ImageIcon icone = new ImageIcon("C:/Livros/Java/busca.gif"); Defini-se uma imagem public Exemplo2() { setTitle("Inserindo botoes na janela"); setSize(350,100); setLocation(50,50); getContentPane().setBackground(new Color(180,180,180)); Continua... POO usando JAVA 11 b1 = new JButton("Busca",icone); b1.setHorizontalTextPosition(AbstractButton.LEFT); //posicao do texto b1.setVerticalTextPosition(AbstractButton.TOP); //posicao do texto b1.setBackground(new Color(100,180,180)); //cor de fundo do botao b1.setForeground(Color.black); //cor do titulo do botao b1.setFont(new Font("ScriptS",Font.BOLD,20)); //define a fonte do botao b1.setEnabled(true); //Esta condicao eh Defaut, podendo ser alterada para FALSE b1.addActionListener(this); //registra o b1 para que um evento seja gerado por ele b1.setToolTipText("Pressione aqui para realizar uma busca"); //exibe a mensagem qdo o ponteiro do estiver sobre o botao. b1.setMnemonic(KeyEvent.VK_B); //cria um atalho via teclado: ALT + B b2 = new JButton("Cancelar"); b2.addActionListener(this); b2.setMnemonic(KeyEvent.VK_C); b2.setToolTipText("Pressione aqui para cancelar"); getContentPane().setLayout(new FlowLayout()); //gerenciador de layout getContentPane().add(b1); getContentPane().add(b2); Continua... } POO usando JAVA 12 public void actionPerformed(ActionEvent e) { // metodo implementado pelo ActionListener if (e.getSource()==b1) //se o objeto que gerou o evento for o botao b1 { System.out.println("Botao 1 pressionado"); } if (e.getSource()==b2) { System.out.println("Botao 2 pressionado"); } } Continua... POO usando JAVA 13 public static void main(String args[]) { JFrame Janela = new Exemplo2(); Janela.show(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } } Continua... POO usando JAVA import java.awt.*; import java.awt.event.*; import javax.swing.*; class Exemplo3 extends JFrame implements ActionListener { JLabel L1,L2,L3; JButton B1, B2, B3, B4, B5; JTextField T1,T2,T3; public static void main(String args[]) { JFrame Janela=new Exemplo3(); Janela.show(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } Continua... POO usando JAVA 15 Exemplo3() { setTitle("Calculadora"); setSize(350,90); setLocation(50,50); getContentPane().setBackground(new Color(150,150,150)); getContentPane().setLayout(new GridLayout(3,4)); L1 = new JLabel("Num.1"); L1.setForeground(Color.black); L1.setFont(new Font("",Font.BOLD,14)); L2 = new JLabel("Num.2"); L2.setForeground(Color.black); L2.setFont(new Font("",Font.BOLD,14)); L3 = new JLabel("Total"); L3.setFont(new Font("",Font.BOLD,14)); Continua... POO usando JAVA 16 B1 = new JButton ("+"); B1.addActionListener(this); B2 = new JButton ("-"); B2.addActionListener(this); B3 = new JButton ("x"); B3.addActionListener(this); B4 = new JButton ("/"); B4.addActionListener(this); B5 = new JButton ("Limpar"); B5.addActionListener(this); B5.setBackground(Color.black); B5.setForeground(Color.white); T1 = new JTextField(); T2 = new JTextField(); T3 = new JTextField(); Continua... POO usando JAVA 17 // T1.addTextListener(this); T3.setEditable(false); //define que o textField como somente leitura //adicionam todos os objetos na janela na ordem que aparecem getContentPane().add(L1); getContentPane().add(T1); getContentPane().add(B1); getContentPane().add(B2); getContentPane().add(L2); getContentPane().add(T2); getContentPane().add(B3); getContentPane().add(B4); getContentPane().add(L3); getContentPane().add(T3); getContentPane().add(B5); } Continua... POO usando JAVA 18 public void actionPerformed(ActionEvent e) { if (e.getSource()==B5) { T1.setText(""); T2.setText(""); T3.setText(""); return; } float N1=0,N2=0,result=0; try { N1 = Float.parseFloat(T1.getText()); N2 = Float.parseFloat(T2.getText()); } catch (NumberFormatException erro) { T3.setText("Erro"); return; //encerara o método actionPerformed } Continua... POO usando JAVA 19 if (e.getSource()==B1) { result = N1 + N2; } if (e.getSource()==B2) { result = N1 - N2; } if (e.getSource()==B3) { result = N1 * N2; } if (e.getSource()==B4) { result = N1 / N2; } T3.setText(""+result); //qdo um numero e concatenado com um texto automaticamente ele se transforma em um texto } } Continua... POO usando JAVA 20 Continuação ... Listas e Caixas de Seleção; Caixas de Opção; Painéis e Botões de Rádio POO usando JAVA 21