Linguagem de Programação III Profa. Cintia Carvalho Oliveira Ba. Ciência da Computação - UFJF Mestre em Ciência da Computação - UFU
Interface Gráfica GUI – Graphical User Interface Java possui duas bibliotecas gráficas: AWT (Abstract Window Toolkit) Swing Utilizaremos a biblioteca javax.swing
import javax.swing.JFrame; //importação da classe JFrame public class PrimeiroSwing { JFrame janela = new JFrame(); //criamos um JFrame chamado 'janela' public static void main (String args[]){ new PrimeiroSwing(); } private PrimeiroSwing(){ janela.setTitle("Primeira Aplicação Gráfica"); //definimos o título da janela janela.setSize(350, 150); //definimos a largura e a altura da janela janela.setLocation(50, 50); //define a posição da janela na tela janela.setDefaultCloseOperation(JFrame.EXIT_ON_C LOSE); //define que ao fechar a janela, encerre a aplicação janela.setVisible(true); //mostramos a janela
Centralizar a janela Toolkit tk = Toolkit.getDefaultToolkit(); Dimension d = tk.getScreenSize(); int x = (d.width/ 2 ) – (350/2); int y = (d.height/2) – (150/2); Janela.setLocation(x, y);
Criando um botão Depois da definição do Jframe JButton botao = new JButton("OK"); Dentro do JFrame, após a configuração do fechamento: janela.add(botao);
Layout e fechamento O botão ocupou todo o espaço do JFrame pois não possui um layout. O método setDefautCloseOperation() foi usado para o fechamento da janela: (JFrame.EXIT_ON_CLOSE) – encerra a aplicação (JFrame.HIDE_ON_CLOSE) – esconde a janela (JFrame.DISPOSE_ON_CLOSE) – destroi a janela mas a aplicação continua
Gerenciadores de Layout A GUI é formada por componentes que chamamos de contêineres: FlowLayout, GridLayout, BorderLayout e CardLayout Caso não tenha um gerenciador, o objeto inserido considera todo o contêiner como uma única célula.
FlowLayout O mais simples. Componentes dispostos da direita para a esquerda.
import java. awt. FlowLayout; import javax. swing import java.awt.FlowLayout; import javax.swing.*; public class ExemploFlowLayout { JFrame janela = new JFrame(); //criamos e instaciamos um JFrame chamado 'janela' JPanel painel = new JPanel(); //criamos um JPanel chamado painel JLabel rotulo = new JLabel("Seu nome: "); //criamos um JLabel chamado rotulo e com o texto "Seu nome: " JTextField texto = new JtextField(5); //criamos um JTextField chamado texto com o tamanho 5 JButton botao = new JButton("OK"); //criamos e instanciamos um JButton chamado 'botao' e com o texto "OK" public static void main (String args[]){ new ExemploFlowLayout(); }
private ExemploFlowLayout(){ janela private ExemploFlowLayout(){ janela.setTitle("Exemplo de um FlowLayout"); //definimos o título da janela janela.setSize(300, 100); //definimos a largura e a altura da janela janela.setLocation(50, 50); //define a posição da janela na tela janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); //define que ao fechar a janela, encerre a aplicação painel.setLayout(new FlowLayout(FlowLayout.CENTER, 30, 20)); //definimos o layout do painel painel.add(rotulo); //adicionamos o rotulo ao painel painel.add(texto); //adicionamos o texto ao painel painel.add(botao); //adicionamos o botao ao painel janela.add(painel); //adicionamos o painel à janela //mostramos a janela janela.setVisible(true); }
GridLayout É um gerenciador que divide o contêiner em um conjunto de células de mesma dimensão. A ordem de exibição é de acordo com a ordem de inserção. nome-do-conteiner.setLayout(new GridLayout(linhas, colunas, espaçamentohorizontal, espaçamento-vertical)
BorderLayout Divide o contêiner em cinco regiões: North (região superior) South (região inferior) West (região à esquerda) East (região à direita) Center (região central) Ao adicionar o elemento indicamos a que região ele pertence. Permite somente um elemento por região. Na ausência de elementos em alguma região, as outras ocupam o espaço.
CardLayout Pode agrupar diversos contêineres na forma de cartões. Apenas um contêiner é visível por vez.
Tratamento de Eventos Desejamos interpretar as ações do usuário, para isso devemos implementar uma ou mais interfaces receptoras de eventos: ActionListener: clique em um botão, “enter” em um campo; FocusListener: gerado quando um componente recebe ou perde foco; MouseListener: gerado quando o mouse é clicado, ou entra em um componente; WindowListener: gerado quando ocorre um evento em janela; maximizar, minimizar, etc.
Listener e tratamento do evento A interface ActionListener , exige um método actionPerformed, que trata o evento gerado. O método addActionListener registra quais componentes serão observados.
JButton
Métodos