JDialog

5 respostas
J

Gostaria de colocar uma caixa de diálog no código abaixo:
Qual comando devo utilizar já a mesma cx deverá aparecer em duas situações diferentes (incluir / alterar) mudando apenas a regra como se faz. Estou com dúvida tb no comando para criar a cx. de dialog :oops:

jButtonIncluir = new JButton(Incluir);

jButtonIncluir.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

Aqui deverá ficar a cx de dialog

A mesma cx deverá ser utilizada no botão alterar				}

});

5 Respostas

brlima
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


/**
 *
 * @author  Bruno
 */
public class MessageClass {
    
    private JFrame frame = new JFrame("Exemplo botao");
    
    private void showMessage(String message, Component parent, String title){
        JOptionPane.showMessageDialog(parent, message, title, JOptionPane.ERROR_MESSAGE);
    }
    
    public MessageClass(){
        
        JButton botao1 = new JButton("Adicionar");
        botao1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent a){
                showMessage("Teste Inserir",frame, "Botao Inserir");
            }
        });
        
        JButton botao2 = new JButton("Remover");
        botao2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent a){
                showMessage("Teste remover",frame, "Botao Remover");
            }
        });
        
        frame.getContentPane().add(botao1, BorderLayout.NORTH);
        frame.getContentPane().add(botao2, BorderLayout.CENTER);
        
        frame.show();
        
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        MessageClass aMessageClass = new MessageClass();
    }
}

Um exemplo pra vc. Criei um método showMessage para vc chamar e exibir sua mensagem. Dai vc chama dos diferentes locais da classe. :smiley:

J

Vou tenta adaptá-lo ao meu código. Valeu pela ajuda. :stuck_out_tongue:

dukejeffrie

Pra levar a reusabilidade da sua telinha ao máximo:

:arrow: faça a GUI numa subclasse de JPanel
:arrow: use um bean burro (POJO) com propriedades que refletem sua GUI
:arrow: crie um método que recebe esse objeto e preenche os campos, checa caixas de texto, etc.
:arrow: crie um método que devolve uma instância desse objeto, preenchida com os valores que o usuário escolheu na GUI

Esse vira um componente totalmente reutilizável, que vc pode colocar dentro de uma janela hoje, mas que um dia pode ser apenas um outro JPanel dentro de uma GUI maior.

Colocar dentro de um JDialog é baba. Tem umas manhas mas o jeito inocente já funciona. Vc deveria ter apenas 1 instância da JDialog, usar show() e hide().

Uma classe que usa essa abordagem é a JOptionPane. Mas como ela na maioria das vezes só retorna qual botão o cara clicou (às vezes tem um input), eles tiraram o bean da API. Vale à pena entender a API (não a implementação).

A msg tá intencionalmente superficial, pq eu não quis que ela ficasse muito comprida. Se vc gostar da idéia, a gente conversa mais…

boa sorte e []s!

J

Gostei muito da idéia (pra mim interessa muito a reutilidade do código), mas fiquei um pouco confusa para começar. Se tiver um exemplo pronto ou um tutorial a respeito do assunto eu agradeço. (posso te mandar o arquivo se vc quiser). :wink:

Obrigadinha

Joseneuza

dukejeffrie

Hmmm… vou tentar de dar um código sem dizer nada, e vc me diz o que vc acha…

class PantsViewer extends JPanel{
   public static final int OK_OPTION = 0;
   public static final int CANCEL_OPTION = 1;

   private int lastSelectedOption;

   private JTextField name;
   private JTextArea description;
   private JSlider size;
   private JComboBox color;
   private JButton okButton;
   private JButton cancelButton;
   ...

   public void setPants(Pants pants);
   public Pants getPants();

   public int getLastSelectedOption() {
    return lastSelectedOption;
   }
}

interface Pants {
   public String getName();
   public void setName(String name);
   public String getDescription();
   public void setDescription(String description);
   public int getSize();
   public void setSize(int size);
   public Color getColor();
   public void setColor(Color color);
}

class PantsImpl implements Pants {
   ...
}

// código da janela:
Pantsviewer pantsViewer = new PantsViewer();
JDialog d = new JDialog("Pants");
d.add();
...

// código que mostra a tela:
pantsViewer.setPants();
pantsViewer.getParentComponent().show(); // isso é feio, mas não quero entrar em detalhes
if (pantsViewer.getLastSelectedOption() == PantsViewer.OK_OPTION) {
  Pants p = pantsViewer.getPants();
  someguy.firePantsChanged(p);
}

Bom, me exaltei… mas tem pouco mais que o mínimo…
Acho que vc sacou como implementa o getPants(), neh?

public Pants getPants() {
  Pants p = new PantsImpl();
  p.setName(name.getText());
  p.setDescription(description.getText());
  ...
  return p;
}

O importante aqui é que seus Pants são imutáveis.

CV, a escolha dos objetos é em homenagem ao seu dia de folga!!

[]s!

Criado 21 de janeiro de 2004
Ultima resposta 22 de jan. de 2004
Respostas 5
Participantes 3