Instanciando objeto

Pessoal,

Antes de postar esta dúvida sempre pesquiso no histórico do GUJ, para ver se encontro algum posto que possa tirar minha dúvida, mas infelizmente não encontrei.

É o seguinte.

Eu criei uma tela que será utilizada para confirmação de algumas operações, como Gravar um registro no banco com apenas, dois botões, SIM e NAO e um jLabel que exibirá uma mensagem que será definida no frame que chama esta tela.
Eu consigo criar o objeto Frame(Tela de confirmação) e exibi-lo, antes de exibi-lo eu passo a mensagem que seria exibida no JLABEL, mas só aparece o frame com os botões de confirmação, SIM e NAO, mas a mensagem não aparece.

Alguém pode tirar essa dúvida, sou novo em programação e principalmente em java, se alguem puder me ajudar fico grato.

Poste o código aí, se não fica difícil…

Para mensagens de confirmação, use o JOptionPane:

[code]public void deletarTodoBancoDeDados() {
if (JOptionPane.showConfirmationMessage(this, “Tem certeza”) != JOptionPane.YES_OPTION)
return;

fazerEstrago();
}[/code]

Há diversos construtores no JOptionPane, que te permitem definir que tipos de botões terá lá dentro. Ele é altamente configurável. E é bem mais prático do que fazer o seu próprio JDialog modal.

Agora, quanto ao seu problema, como vc está dando o setText no seu JLabel? Pode colar o código aqui?

Já usei a classe JOptionPane e realmente atende, mas estava querendo fazer uma tela para ter maior controle sobre designer, padrões de cores, o texto dos botões, etc.

Este é o trecho de código da tela principal onde a tela de confirmação é carregada e onde o valor da mensagem é setado

Este é o trecho de código da tela de confirmação.

Agradeço a todos pela atenção.

Dá um ctrl+C e ctrl+V no seu código.

E põe ele aqui entre as tags code. Se ainda não sabe fazer isso, leia o tópico:
http://www.guj.com.br/posts/list/50115.java

Se o código for muito longo, vc pode usar o botão de attachment, para anexar arquivos.

Caro Vinigodoy,

Realmente foi a primeira vez que postei uma imagem no forum, mas antes fiz uma pesquisa para realizar o procedimento e me deparei justamente com esse post que você me enviou. Fiz o post e solicitei a VISUALIZAÇÃO, e os trechos de códigos representados pelas imagens foram exibidos.

Vou refazer novamente para ver no que vai dar.

Mas valeu pela atenção.

Trecho de código tela principal.

Trecho de código da tela de confirmação..

Continua sem aparecer o código, pode vir aqui na sala que eu te ensino a usar as tags.

Qual é o problema com CTRL+C e CTRL+V?

Não cola imagem não. Fica ruim de ler, o post fica mais pesado, e prejudica quem fizer busca no fórum.

Valeu Glauber,

Eu estava usando a tag Img, por isso que a situação não coincidia.

Um abraço.

Pessoal me parece que agora vai. rsrs.

Trecho de código da tela de confirmação

package padroes;

import javax.swing.UIManager;

public class TelaConfirmacao extends javax.swing.JFrame {

    public String RetornoMsg;
        Boolean RetornoBotao;
    public TelaConfirmacao() {
        try 
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
             //UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
        } 
            catch (Exception e) {
        }
        initComponents();
        lbMensagem.setText(RetornoMsg);
    }

private void btSimActionPerformed(java.awt.event.ActionEvent evt) {                                      
// TODO add your handling code here:
    RetornoBotao = true;
    dispose();
}                                     

private void btNaoActionPerformed(java.awt.event.ActionEvent evt) {                                      
// TODO add your handling code here:
    RetornoBotao = false;
    dispose();
}                                     
    
    public static void main(String args[]) {
        
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TelaConfirmacao().setVisible(true);
            }
        });
    }

Trecho de código da tela Principal

private void jLinkButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
    
    TelaConfirmacao TelaConfirma = new TelaConfirmacao();
    TelaConfirma.RetornoMsg = "Os dados estão corretos?";
    System.out.println(TelaConfirma.RetornoMsg);
    new TelaConfirmacao().show();
    
}                                            

A linha System.out.println(TelaConfirma.RetornoMsg) só coloquei para fazer um teste.

Mais uma vez, peço desculpas a todos pelo trastorno ocorrido com relação à TAG IMG.

Agradeço a atenção.

Não faltou definir o tamanho da sua tela de confirmação?

Ela deve estar sendo exibida com tamanho 0.

Outra coisa, telas de confirmação são do tipo JDialog, não JFrame. Sem isso, vc não conseguirá deixar a tela modal, ou seja, impedir que o usuário clique fora da tela antes de apertar o sim ou o não.

Boa tarde,

Quanto ao tamanho, a tela era exibida com as mesmas dimensões que eu havia definido na classe pai.

Quanto a sua dica sobre a utilização do JDialog e não do JFrame, cara realmente isso é de suma importancia, já tinha analizado essas questões, mas não sabia como resolver, agora com a utilização da JDialog, resolvem-se quase todos os meus problemas. Vi um exemplo em uma discursão postada por você (ViniGodoy) bastante interessante que utilizaei para resolver meu problema.
A questão agora é a seguinte. Como no primeiro caso, meu problema realmente é em atualizar o texto de um jlabel que está na classe pai. Todos os outros requisitos já estão sendo atendidos graças a dica do nosso amigo Vinigodoy.

Um abraço a todos, e continuo agradecendo a atenção.

Não querendo ser chato, mas fica aí a dica cara… use a padronização de nomes de Classes, métodos e atributos Java cara… fica estranho pra quem está acostumado com a padronização ler “RetornoBotao” ao invés de “retornoBotao” ou “RetornoMsg” ao invés de “retornoMsg”…

Outra dica tbm. Encapsule seus dados, não crie atributos públicos a menos que seja imprescindível, coloque-os como privados e use os métodos get() e set() para “escrever em” e “retornar de” seus atributos privados…

Quanto a sua dúvida… não entendi bem… o Label não está exibindo a mensagem ?? Ou os botões que não aparecem ??

Valews :wink:

Boa tarde novamente,

Cara, pode ser chato a vontade eu estou no forum é para aprender mesmo e vou conseguir fazer isso com muita enfase se vocês realmente forem chatos mesmo. Te agradeço pela dica, pois realmente estou absorvendo, tudo porque java é totalmente novo para mim, na realidade programação é novo para mim.
Mas fique a vontade para puxar minha orelha quando achar necessário.

Quanto ao problema vou tentar explicar melhor.

Eu tenho uma tela de padrão para confirmação, que será chamada em várias telas, principalmente nas manutenções que alimentam o banco de dados.
E nesta tela eu tenho um jLabel chamado lbMensagem, que representa a mensagem que será exibida para o usuário a depender da situação. O que quero saber, é como altero o texto do lbMensagem com o conteúdo que eu quiser, no momento que eu chamar a tela padrão de confirmação. Já que quando o usuário for gravar um registro, a mensagem seria “Deseja gravar o registro?” e se ele for cancelar um registro a mensagem seria “Tem certeza que deseja cancelar o registro?”.
Quero incorporar várias mensagem numa única tela padrão, o jDialog está sendo chamado corretamente, com todos os componentes que existem nele, só não sei como faço para alterar essa mensagem.

package padroes;

import javax.swing.*;

public class PadraoConfirma extends javax.swing.JDialog {

    public PadraoConfirma(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        try 
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } 
            catch (Exception e) {
        }
        initComponents();
    }
    @SuppressWarnings("unchecked")
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                
                PadraoConfirma dialog = new PadraoConfirma(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton btNao;
    private javax.swing.JButton btSim;
    private javax.swing.JLabel lbImagem;
    private javax.swing.JLabel lbMensagem;
    private javax.swing.JLabel lbRecomendacao;
    private javax.swing.JPanel pnlPrincipal;
    private javax.swing.JPanel pnlRodape;
    private javax.swing.JPanel pnlTitulo;
    // End of variables declaration
}

Blz cara… recado entendido…

Vamos lá… sempre que for pra alterar a mensagem do Label, vc terá que usar a propriedade setText() do mesmo…

Comece tirando isso aqui:

[code]# public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new TelaConfirmacao().setVisible(true);

}

});

}[/code]

Coloque o setVisible no construtor da sua classe ou quando for chamar a nova tela vc chama new TelaConfirmacao.setVisible(true);

E aqui:

[code]private void jLinkButton1ActionPerformed(java.awt.event.ActionEvent evt) {

TelaConfirmacao TelaConfirma = new TelaConfirmacao();
TelaConfirma.RetornoMsg = “Os dados estão corretos?”;
System.out.println(TelaConfirma.RetornoMsg);
new TelaConfirmacao().show();
} [/code]

Tente fazer assim:

[code]private void jLinkButton1ActionPerformed(java.awt.event.ActionEvent evt) {

TelaConfirmacao TelaConfirma = new TelaConfirmacao();
TelaConfirma.RetornoMsg = “Os dados estão corretos?”;
System.out.println(TelaConfirma.RetornoMsg);
TelaConfirma.show();
}[/code]

Não testei cara… dê uma testada aí e vê se deu certo…

Uma dica que dou pra você. Eu uso para mensagens, uma classe só com String Státicas contendo minhas mensagens padrões do sistema… na hora de usar chamo a classe com a String statica. Fica mais ou menos assim

JOptionPane.showMessageDialog(null, Mensagem.registroNaoPodeSerGravado, JOptionPane.ERROR_MESSAGE)

Blz ? qualquer dúvida… estamos aí.

Falows :wink:

Boa tarde,

Cara brigadão mesmo, funcionou.

Um abraço a todos.