Erro - Variavel em classe não é publica

Estou com o seguinte erro:

[color=red]dia is not public in utilitarios.data; cannot be accessed from outside package[/color]

TelaPrincipal.java:

import utilitarios.data;

public class TelaPrincipal extends javax.swing.JFrame {

    /** Creates new form TelaPrincipal */
    public TelaPrincipal() {
        initComponents();
        data mostra_data = new data();
        mostra_data.le_Data();
        labelData.setText("O dia é "+mostra_data.dia+" o mes é "+mostra_data.mes);
    }

utilitarios/data.java

package utilitarios;

import java.util.Date;

public class data {

    String mes, dia, ano, dia_semana;

    public void le_Data(){

        Date data = new Date();
        mes = ""+data.getMonth();//0 a 11, 0 Janeiro, 11 Dezembro
        dia = ""+data.getDate();
        ano = ""+(1900 + data.getYear());
        dia_semana = ""+data.getDay();

    }

Disposição dos arquivos:

Eu declarei a classe como publica, por que não consigo ler de outros pacotes?

Sei que nisso não responde sua pergunta, mais fiquei meia hora só pra entender isso

data mostra_data = new data();  

Põe classe maiúscula aí, já ajuda mto a gente aqui ;D

Sobre o erro, creio que é porquê o os seus Strings estão sem modificador de acesso.(tá default), muda pra public.

Abraço :lol:

Desculpa Almeidaah, mas o que é por classe em maiuscula?
O nome da classe você quer dizer?
Eu nomeei ela do mesmo jeito que nomeio variaveis. Existe algum procedimento padrão pro nome das classes?

Obrigado, consegui concertar o erro, era o public antes do String que estava faltando mesmo.

Valeu

Sim sim, pra cada tipo de variável, métodos e classes entre outros tem uma nomeação específico.

Java segue a regra do camelCase

Classe : Pessoa , TestePrograma

variável : diaDoAno, mesDoAno

método : facaIsso, facaAquilo

Espero poder ajudar, qualquer coisa pergunte aí, até mais.
:stuck_out_tongue:

Cá entre nós, classe com nome minúsculo é um crime.
Pessoas serão fortemente ignorantes com você se verem sua classe ocm letra minúscula(acredite em mim).

Mais todos podemos aprender :lol:

Valeu cara, vou dar uma olhada no padrão camelCase.
Hm, o package eu também tenho que colocar em maiuscula?

não, o package é simplesmente assim.

Usualmente reocmenda-se o uso de um site da empresa que desenvolve ou o seu nome, por exemplo.

Onde fica a classe de teste :

almeida.fernando.main (pacote que contem a classe main)
br.com.guj.logica (pacote que contem a lógica do programa

sobrenomedealgo.nomedealgo.igu (interface grafica com usuario)

simples assim.

para o nome do pacote tambem é bem usado o nome da empresa, nome do modulo, que eu me lembre não tem uma regra tão especifica para isso

mas use o padrão que foi mencionado acima, esses todos os “programadores” usam (pelo menos deveriam)

Eu sei que não tem nada a ver com sua dúvida, mas só uma dica:
Quando for trabalhar com datas, use GregorianCalendar em vez java.util.Date. Esse é o mesmo caso de usar BigDecimal em vez de float ao trabalhar com dinheiro.

voltando ao seu problema, quando vc nao declara nenhum modificador de acesso na sua variavel, ela fica com o modificador default que so permite acesso a elas dentro do pacote.

A classe está publica , faltou deixar as variáveis pública do jeito que está embaixo no/ package utilitarios/ data.java
igual o de baixo.

:mrgreen:
public String mes, dia, ano, dia_semana;

acho que ele já conseguiu solucionar…afinal já se passaram 2 anos…kkkkk

É que eu estava com o mesmo problema , este fórum não ajudou muito

Não sei qual o seu problema…porem o que foi questionado neste tópico estava com sua solução muito bem explicada.

O problema estava no uso do modificador de acesso default…