Problema com setText()

6 respostas
psyther

Estou com um problema quando chamo a função LeData() da classe Data, para atribuir os valores ao rotulo labeldata, para que a data seja exibida na tela principal.
Alguem pode me auxiliar?
desde já grato.

public TelaPrincipal() {
        initComponents();

        //Data data = new Data();
        Data mostraData = new Data();
        mostraData.LeData();
        labeldata.setText(mostraData.diaSemana+", "+mostraData.dia+" de "+mostraData.mes+" de "+mostraData.ano+);
public class Data {

    String diaSemana;
    String dia;
    String mes;
    String ano;

    public void LeData()
    {
        Date data = new Date();

        //diaSemana = ""+data.getDay();
        dia = ""+data.getDate();
        //mes = ""+data.getMonth();
        ano = ""+(1900 + data.getYear());

        switch (data.getDay())
        {
            case 0: diaSemana = "Domingo"; break;
            case 1: diaSemana = "Segunda-Feira"; break;
            case 2: diaSemana = "Terça-Feira"; break;
            case 3: diaSemana = "Quarta-Feira"; break;
            case 4: diaSemana = "Quinta-Feira"; break;
            case 5: diaSemana = "Sexta-Feira"; break;
            case 6: diaSemana = "Sábado"; break;
        }

        switch (data.getMonth())
        {
            case 0: mes = "Janeiro"; break;
            case 1: mes = "Fevereiro"; break;
            case 2: mes = "Março"; break;
            case 3: mes = "Abril"; break;
            case 4: mes = "Maio"; break;
            case 5: mes = "Junho"; break;
            case 6: mes = "Julho"; break;
            case 7: mes = "Agosto"; break;
            case 8: mes = "Setembro"; break;
            case 9: mes = "Outubro"; break;
            case 10: mes = "Novembro"; break;
            case 11: mes = "Dezembro"; break;
        }


    }

}

6 Respostas

Giovanni_Ritchie

Podia explicar melhor o que vc quer que aconteca e o que esta acontecendo?

Pesquise sobre Calendar, pode ser util!

Abraco

E

Kra… vc num atribuiu nenhum valor à variavel ‘data’… vc ta tentando retirar valores que nao foram nem sequer tribuidos…
tenta assim:

java.util.Date data = new java.util.Date(System.currentTimeMillis());
renamed

A princípio não tive problemas aqui, porém vc está usando métodos deprecated getDate() , getYear() , getDay() , getMonth() .

Usá-los significa que o comportamento esperado por eles pode não ser acontecer. Além disso, no futuro, esses métodos podem (embora nunca tenha ouvido falar que isso tenha ocorrido) ser removidos da API.

Eu rodei o método aqui e, como eu disse antes, a princípio funcionou, com um único problema, deu erro de compilação, retire o último “+” depois do mostraData.ano, ficando assim:

labeldata.setText(mostraData.diaSemana+", "+mostraData.dia+" de "+mostraData.mes+" de "+mostraData.ano);

Se mesmo assim não funcionar, coloque

System.out.println(mostraData.diaSemana + ", " + mostraData.dia + " de " + mostraData.mes + " de " + mostraData.ano);

e vê se funciona.
Se nada disso funcionar, bem, dê mais detalhes do erro, o que acontece? vc clica no botão e nada acontece (vc colocou ActionListener no botão? O label está visível? O label está em uma área visível do frame? O label está com cor de fundo igual a cor de letra etc etc…)

Se funcionar, mude sua classe utilizando a classe Calendar, com ela é possível obter o dia, mês e ano com métodos não deprecated.

psyther

Bom, o que eu quero que aconteca, é o seguinte, que a data seja exibida na tela principal da aplicação.

ex: se eu executar o aplicativo hj sera exibibo na tela principal:

sexta feira, 11 de março de 2011

tentei das duas formas que o renamed me passou, o erro continua sendo o msm, a api diz q as variaveis nao sao publicas e q nao podem ser acessadar por um pacote diferente.
essa menssagem aparece naquele alerta que se da em cada linha q ocorre um erro, cm um octogano vermelho com um !

diaSemana is not public in br.com.unicerp.pcap.utilitarios.Data; cannot be accessed from outside package
dia is not public in br.com.unicerp.pcap.utilitarios.Data; cannot be accessed from outside package
mes is not public in br.com.unicerp.pcap.utilitarios.Data; cannot be accessed from outside package
ano is not public in br.com.unicerp.pcap.utilitarios.Data; cannot be accessed from outside package

dai nem executar ele executa.

desde já agradeço pela atenção

renamed

Os atributos estão encapsulados na classe, não são visíveis fora dela.

Você tem duas formas se contornar isso:

1)Crie os métodos “get” na classe Data

public String getDiaSemana() {
	return diaSemana;
}

public String getDia() {
	return dia;
}

public String getMes() {
	return mes;
}

public String getAno() {
	return ano;
}

No seu label, chame os atributos utilizando os métodos criados, assim:

labeldata.setText(mostraData.getDiaSemana() + ", " + mostraData.getDia() + " de " + mostraData.getMes() + " de " + mostraData.getAno());

2)Sobreescreva o método toString() da classe Data, criando o seguinte método:

public String toString(){
    	return diaSemana + ", " + dia + " de " + mes + " de " + ano;
}

No seu label, escreva assim:

labeldata.setText(mostraData.toString());

ok?

psyther

renamed agora sim funcionou :smiley:
valeu cara, abraço.

Criado 10 de março de 2011
Ultima resposta 11 de mar. de 2011
Respostas 6
Participantes 4