Erro no evento

1 resposta
wesleysanches

Olá a todos. Estou fazendo um programinha bem idiota até errado na questão de layout mas apenas para testar e aprender um pouco. Mas na hora q eu peço uma caixa de dialogo com os dados dos dois JTextField ele me dá erro. Pq será ?? Abaixo segue o código completo:

import javax.swing.*;

public class MinhaJanela
{
    // Constructor
    public MinhaJanela()
    {
        // Componentes
        JFrame Janela = new JFrame("Janela em java");
        JTextField txtNome = new JTextField();
        JTextField txtSobrenome = new JTextField();
        JLabel lblNome = new JLabel("Digite abaixo seu nome:");
        JLabel lblSobrenome = new JLabel("Digite abaixo seu sobrenome:");
        JButton btnExibeNome = new JButton("Nome completo");
        JButton btnSair = new JButton("Finalizar");

        // Janela - Propriedades
        Janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Janela.getContentPane().setLayout(null);
        Janela.setSize(400, 200);
        Janela.setLocationRelativeTo(null);
        Janela.setVisible(true);
        Janela.setResizable(false);

        // txtNome - Propriedades
        Janela.getContentPane().add(txtNome);
        txtNome.setBounds(10, 40, 100, 20);
        // txtSobrenome - Propriedades
        Janela.getContentPane().add(txtSobrenome);
        txtSobrenome.setBounds(160, 40, 200, 20);
        // lblNome - Propriedades
        Janela.getContentPane().add(lblNome);
        lblNome.setBounds(10, 20, 150, 20);
        // lblSobrenome - Propriedades
        Janela.getContentPane().add(lblSobrenome);
        lblSobrenome.setBounds(160, 20, 180, 20);
        // btnSair - Propriedades
        Janela.getContentPane().add(btnSair);
        btnSair.setBounds(50, 90, 100, 30);
        btnSair.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                if (JOptionPane.showConfirmDialog(null, "Tem certeza que deseja sair ??", "Confirmação !!", JOptionPane.YES_NO_OPTION) == 0)
                { System.exit(0); }
            }
        });
        // btnExibeNome - Propriedades
        Janela.getContentPane().add(btnExibeNome);
        btnExibeNome.setBounds(180, 90, 150, 30);
        btnExibeNome.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                JOptionPane.showMessageDialog(null, "O nome completo é:\n\n" + txtNome.getText() + " " + txtSobrenome.getText());
            }
        });
    }

    // Iníco do programa
    public static void main(String[] args)
    { new MinhaJanela(); }
}

O Primeiro evento (btnSair) Funciona, pede a confirmação e sai ou não sem problemas. Agora o outro q pega os dados dos campos não funcionam. Oque será q está de errado ??

1 Resposta

wesleysanches

Poxa galera, deu certo … mas não entendi.
Eu apenas tirei os componentes de dentro do Constructor e coloquei eles fora e funcionou. O código fico assim:

import javax.swing.*;

public class MinhaJanela
{
    private JTextField txtNome = new JTextField();
    private JTextField txtSobrenome = new JTextField();
    private JLabel lblNome = new JLabel("Digite abaixo seu nome:");
    private JLabel lblSobrenome = new JLabel("Digite abaixo seu sobrenome:");
    private JButton btnExibeNome = new JButton("Nome completo");
    private JButton btnSair = new JButton("Finalizar");

    // Constructor
    public MinhaJanela()
    {
        // Componentes
        JFrame Janela = new JFrame("Janela em java");

        // Janela - Propriedades
        Janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Janela.getContentPane().setLayout(null);
        Janela.setSize(400, 200);
        Janela.setLocationRelativeTo(null);
        Janela.setVisible(true);
        Janela.setResizable(false);

        // txtNome - Propriedades
        Janela.getContentPane().add(txtNome);
        txtNome.setBounds(10, 40, 100, 20);
        // txtSobrenome - Propriedades
        Janela.getContentPane().add(txtSobrenome);
        txtSobrenome.setBounds(160, 40, 200, 20);
        // lblNome - Propriedades
        Janela.getContentPane().add(lblNome);
        lblNome.setBounds(10, 20, 150, 20);
        // lblSobrenome - Propriedades
        Janela.getContentPane().add(lblSobrenome);
        lblSobrenome.setBounds(160, 20, 180, 20);
        // btnSair - Propriedades
        Janela.getContentPane().add(btnSair);
        btnSair.setBounds(50, 90, 100, 30);
        btnSair.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                if (JOptionPane.showConfirmDialog(null, "Tem certeza que deseja sair ??", "Confirmação !!", JOptionPane.YES_NO_OPTION) == 0)
                { System.exit(0); }
            }
        });
        // btnExibeNome - Propriedades
        Janela.getContentPane().add(btnExibeNome);
        btnExibeNome.setBounds(180, 90, 150, 30);
        btnExibeNome.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                JOptionPane.showMessageDialog(null, "O nome completo é:\n\n" + txtNome.getText() + " " + txtSobrenome.getText());
            }
        });
    }

    // Iníco do programa
    public static void main(String[] args)
    { new MinhaJanela(); }
}

Funciona, mas não daria no mesmo de deixar os componentes dentro do constructor ??
Vlw e desde já obrigado.

Criado 19 de agosto de 2009
Ultima resposta 19 de ago. de 2009
Respostas 1
Participantes 1