USJT – 2016 – CCO & SI – PPINT – Práticas de Programação Integrada
Professores:
Calvetti, Élcio, Fúlvio, Hamilton, Liliane e Rodrigo
Aula:
09
Assunto:
Diálogos Retornando Valores em Java.
Conceitos Básicos abordados pelo Professor:
- Diálogos;
- Super();
- This;
- Dispose();
- Modal; e
- Flag.
Exemplos:
1- DialogoI.java e ExemploI.java: Exemplo de diálogos que retornam valores entre eles, utilizando-se de instanciação: A chamada do diálogo usa uma instanciação da classe “DialogoI”, classe que recebe outro valor; e
2- DialogoM.java e ExemploM.java: Exemplo de diálogos que retornam valores entre eles, utilizando-se de métodos: A chamada do diálogo usa um método da classe “DialogoM”, classe que recebe outro valor.
Nesses exemplos, o objetivo foi obter o retorno do valor de diálogo. Pode-se utilizar a mesma estrutura, para o caso se receber uma senha, por exemplo.
O JDialog possui no construtor a classe que o chama, por isso utilizou-se do comando this, e também um flag que diz se o diálogo é MODAL, ou seja, só permite retornar à aplicação que o chamou após o seu término. Essa flag está atribuída inicialmente com true.
Atividades Práticas:
1- Baseado nos exercícios da aula anterior, de cadastro e validação de Login e Senha, gravados e lidos
em um arquivo texto, desenvolver um programa único que se utilize de Diálogo para tal aplicação,
através de Instanciação; e
2- Baseado nos exercícios da aula anterior, de cadastro e validação de Login e Senha, gravados e lidos
em um arquivo texto, desenvolver um programa único que se utilize de Diálogo para tal aplicação,
através de Método.
Anexos:
// Exemplo de Diálogo por Instanciação
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class DialogoI extends JDialog implements ActionListener { // Rótulo JLabel lb; // Campo Texto JTextField tf; // Botão JButton bt; // Atributo de valor int valor; // Método Construtor public DialogoI(JFrame fr) {
// Invoca o método construtor da superclasse super(fr, true);
// Cria um Conteiner de Tela Container cp = getContentPane();
// Determina a tela como um FlowLayout cp.setLayout(new FlowLayout());
// Cria um Rótulo com o texto "Valor" lb = new JLabel("Valor:");
// Adiciona o Rótulo no Conteiner cp.add(lb);
// Cria um Campo Texto de largura 10 pxls tf = new JTextField(10);
// Adiciona o Campo Texto no Conteiner cp.add(tf);
// Cria um Botão com o texto "OK" bt = new JButton ("OK");
// Adiona o Botão no Conteiner cp.add(bt);
// Adiciona uma ação ao Botão bt.addActionListener(this);
// Programa o tamanho inicial do FlowLayout em pxls setSize(200,100);
// Determina a localização inicial do FlowLayout em pxls setLocation(200,200);
// Determina qual o título do FlowLayout setTitle("Valores");
// Estabelece que o FlowLayout será visível inicialmente setVisible(true);
}
// Método de tratamento do evento da ação do botão public void actionPerformed(ActionEvent e)
{
// Verifica se o evento pertence ao botão if (e.getSource() == bt)
{
// Lê o valor constante no campo texto e o atribui a valor valor = Integer.parseInt(tf.getText());
// Fecha e Libera o FlowLayout dispose();
} }
// Método para acessar o atributo Valor public int getValor()
{
return valor; }
}
// Exemplo de Diálogo por Instanciação - Teste
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class ExemploI extends JFrame implements ActionListener { // Botão JButton b; // Método Construtor public ExemploI() {
// Cria um Conteiner de Tela Container c = getContentPane();
// Determina a tela como um FlowLayout c.setLayout(new FlowLayout());
// Cria um Botão com o texto "Clique" b = new JButton("Clique");
// Adiona o Botão no Conteiner c.add(b);
// Adiciona uma ação ao Botão b.addActionListener(this);
// Programa o tamanho inicial do FlowLayout em pxls setSize(350,75);
// Determina a localização inicial do FlowLayout em pxls setLocation(470,50);
// Determina qual o título do FlowLayout setTitle("Exemplo de Diálogo (Instanciação)");
// Estabelece que o FlowLayout será visível inicialmente setVisible(true);
// Método de tratamento do evento da ação do botão public void actionPerformed(ActionEvent e)
{
// Verifica se o evento pertence ao botão if(e.getSource() == b)
{
// Instancia um objeto de Dialogo DialogoI a = new DialogoI(this);
// Apresenta o atributo valor (de Dialogo)
JOptionPane.showMessageDialog(null, "Valor Digitado: " + a.valor); }
}
// Método Principal
public static void main(String args[]) {
// Instancia um objeto de Exemplo ExemploI prog = new ExemploI();
// Programa encerramento do Frame no Sair (X)
prog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}
// Exemplo de Diálogo por Método
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class DialogoM extends JDialog implements ActionListener { // Rótulo JLabel lb; // Campo Texto JTextField tf; // Botão JButton bt; // Atributo de valor int valor; // Método Construtor private DialogoM(JFrame fr) {
// Invoca o método construtor da superclasse super(fr, true);
// Cria um Conteiner de Tela Container cp = getContentPane();
// Determina a tela como um FlowLayout cp.setLayout(new FlowLayout());
// Cria um Rótulo com o texto "Valor" lb = new JLabel("Valor:");
// Adiciona o Rótulo no Conteiner cp.add(lb);
// Cria um Campo Texto de largura 10 pxls tf = new JTextField(10);
// Adiciona o Campo Texto no Conteiner cp.add(tf);
// Cria um Botão com o texto "OK" bt = new JButton ("OK");
// Adiona o Botão no Conteiner cp.add(bt);
// Adiciona uma ação ao Botão bt.addActionListener(this);
// Programa o tamanho inicial do FlowLayout em pxls setSize(200,100);
// Determina a localização inicial do FlowLayout em pxls setLocation(200,200);
// Determina qual o título do FlowLayout setTitle("Valores");
// Estabelece que o FlowLayout será visível inicialmente setVisible(true);
}
// Método de tratamento do evento da ação do botão public void actionPerformed(ActionEvent e)
{
// Verifica se o evento pertence ao botão if (e.getSource() == bt)
{
// Lê o valor constante no campo texto e o atribui a valor valor = Integer.parseInt(tf.getText());
// Fecha e Libera o FlowLayout dispose();
} }
// Método para acessar o atributo Valor static int getValor(JFrame fr)
{
DialogoM dl = new DialogoM(fr); return dl.valor;
} }
// Exemplo de Diálogo por Método - Teste
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class ExemploM extends JFrame implements ActionListener { // Botão JButton b; // Método Construtor public ExemploM() {
// Cria um Conteiner de Tela Container c = getContentPane();
// Determina a tela como um FlowLayout c.setLayout(new FlowLayout());
// Cria um Botão com o texto "Clique" b = new JButton("Clique");
// Adiona o Botão no Conteiner c.add(b);
// Adiciona uma ação ao Botão b.addActionListener(this);
// Programa o tamanho inicial do FlowLayout em pxls setSize(350,75);
// Determina a localização inicial do FlowLayout em pxls setLocation(470,50);
// Determina qual o título do FlowLayout setTitle("Exemplo de Diálogo (Método)");
// Estabelece que o FlowLayout será visível inicialmente setVisible(true);
}
// Método de tratamento do evento da ação do botão public void actionPerformed(ActionEvent e)
{
// Verifica se o evento pertence ao botão if(e.getSource() == b)
{
// Apresenta o atributo valor (de Dialogo)
JOptionPane.showMessageDialog(null,"Valor Digitado:"+DialogoM.getValor(this)); }
}
// Método Principal
public static void main(String args[]) {
// Instancia um objeto de Exemplo ExemploM prog = new ExemploM();
// Programa encerramento do Frame no Sair (X)
prog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }