Galera da uma força ai o negocio e simples mais quando a gente esta aprendendo uma linguagem sozinho, as vezes a gente apanha de umas coisas faceis, e o seguinte eu estou criando um componente StatusBar, com varias funções, depois eui coloco o codigo pra galera aqui :-),mais vamos ao problema eu possuo uma função chamada enabledDate e enabledTime olha o corpo delas abaixo eu possuo uma variavel chamada Enabled que foi declarada assim:
private Collection Enableds;
//abaixo segue as duas funções
public void enabledTime(int Bandas, int Formato) {
EnabledDateTime obj = new EnabledDateTime();
obj.setBandas(Bandas);
obj.setFormato(Formato);
obj.setTipo(obj.TIME);
Enableds.add(obj);
if(!Ativo) {
Run = new Thread(this);
Run.start();
Ativo=true;
}
}
public void enabledDate(int Bandas, int Formato) {
EnabledDateTime obj = new EnabledDateTime();
obj.setBandas(Bandas);
obj.setFormato(Formato);
obj.setTipo(obj.DATE);
Enableds.add(obj);
if(!Ativo) {
Run = new Thread(this);
Run.start();
Ativo=true;
}
}
//o objeto EnabledDateTime e uma classe que esta dentro da classe StatusBar o erro e quando //eu tento adicionar o objeto com add do collection ele dispara um NullPointerException diz ai galera onde eu estou oreiando :lol:
PARA QUE JANELAS SE POSSO VIVER SEM PAREDES !!!
SEJA LIVRE USE LINUX !!!
Ai Galera vou postar o codigo fonte do componente que eu estou fazendo, e versão BETA então esta faltando algumas funcionalidades falow !!!
package util;
/**
* @author William Jammes de Oliveira
* @version 1.0
* Usado para desenhar Barras de Status na Tela
* Desenvolvido para Sicop Informática
*/
import java.util.*;
import java.text.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class EnabledDateTime {
static final int DATE = 0;
static final int TIME = 1;
private int Bandas;
private int Formato;
private int Tipo;
public void setBandas(int Bandas) {
this.Bandas=Bandas;
}
public void setFormato(int Formato) {
this.Formato=Formato;
}
public void setTipo(int Tipo) {
this.Tipo=Tipo;
}
public int gettBandas() {
return Bandas;
}
public int getFormato() {
return Formato;
}
public int getTipo() {
return Tipo;
}
}
public class StatusBar extends JComponent implements Runnable {
private JLabel[] lblMensagen;
private Collection Enableds;
private Thread Run;
private static boolean Ativo = false;
//Constante do formato da Date e da Hora
static final int MEDIUM = 0;
static final int SHORT = 1;
static final int LONG = 2;
/**
*Cria um EsatusBar Simples
*/
public StatusBar(int Bandas) {
lblMensagen= new JLabel[Bandas];
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
setBorder(BorderFactory.createEtchedBorder(0));
for(int i=0;i < Bandas;i++) {
lblMensagen[i] = new JLabel("");
add(Box.createHorizontalStrut(10));
add(lblMensagen[i]);
}
}
public void paint(Graphics g) {
super.paint(g);
}
/**
* Usado para Mudar o Texto da Barra de Status
* Exemplo: setText("Nova Mensagen");
* */
public void setText(int Bandas, String Mensagen) {
lblMensagen[Bandas].setText(Mensagen);
}
/**
* Usado para Retornar o Texto da Barra de Status
* Exemplo: MeuTexto = getText(0);
* */
public String getText(int Bandas) {
return lblMensagen[Bandas].getText();
}
public void enabledTime(int Bandas, int Formato) {
EnabledDateTime obj = new EnabledDateTime();
obj.setBandas(Bandas);
obj.setFormato(Formato);
obj.setTipo(obj.TIME);
Enableds.add(obj);
if(!Ativo) {
Run = new Thread(this);
Run.start();
Ativo=true;
}
}
public void enabledDate(int Bandas, int Formato) {
EnabledDateTime obj = new EnabledDateTime();
obj.setBandas(Bandas);
obj.setFormato(Formato);
obj.setTipo(obj.DATE);
Enableds.add(obj);
if(!Ativo) {
Run = new Thread(this);
Run.start();
Ativo=true;
}
}
/** When an object implementing interface <code>Runnable</code> is used
* to create a thread, starting the thread causes the object's
* <code>run</code> method to be called in that separately executing
* thread.
* <p>
* The general contract of the method <code>run</code> is that it may
* take any action whatsoever.
*
* @see java.lang.Thread#run()
*
*/
public void run() {
Iterator iterator=Enableds.iterator();
EnabledDateTime tmp;
while(iterator.hasNext()){
tmp = (EnabledDateTime)iterator.next();
switch(tmp.getTipo()){
case EnabledDateTime.DATE:
lblMensagen[tmp.gettBandas()].setText(DateFormat.getDateInstance(tmp.getFormato(),Locale.getDefault()).format(new Date()));
break;
case EnabledDateTime.TIME:
lblMensagen[tmp.gettBandas()].setText(DateFormat.getTimeInstance(tmp.getFormato(),Locale.getDefault()).format(new Date()));
break;
}
}
}
}
Falow olhem ai o erro ocorre na chamada a função add do objeto Collection t+
outra coisa
sua nomenclatura de variaveis esta fora do padrao recomendado pela sun. todas variaveis (exceto constantes) devem comecar com letra minuscula.
Pow cara… bem loco!! Quando tiver bunitin manda pra gente a versão final… hehehe legal mesmo…
Só uma coisa pra acrescentar, na hora de determinar o número de Bandas no construtor, eu mando 1 “new StatusBar(1)”… e na hora de setar o texto se eu mandar 1 (pensando na primeira “Banda”) dá exception… acho que se vc controlasse isso dentro da classe ia ficar melhor…
Ae Galera foi mal, eu venho da programação C++ e nela não ha muita coisa em relação a nomeclatura,então defini do meu jeito mais eu vou arrumar pois eu sou fanatico por desenvolvimento de controles e devo postar muitos aqui falow
brigadão !!!