Olá Suellen_Susu,
Repare que você retirou a declaração da seguinte variavel na classe PrincipalTela
private static JLabel lConta;
Inclua ela de volta e faça um teste.
Abraço e bons estudos!
Olá Suellen_Susu,
Repare que você retirou a declaração da seguinte variavel na classe PrincipalTela
private static JLabel lConta;
Inclua ela de volta e faça um teste.
Abraço e bons estudos!
paulofernandesjr as principais melhorias que faria são de performance :
// 1) Nos metodos que vc invoca nos teus callbacks não passaria o ActionEvent ao metodo e retiraria o parametro recebido do metodo.
// 2) Não utilizar o metodo preencheComZero, pois esta em um loop e o que o metodo preencheComZero faz da para ser feito com uma linha com o operador ternario e
// 3) Nomei as tuas variaveis com o sufixo indicando o teu tipo para os tipos não usuais, neste codigo não teve problema pois a qtd de linhas é pequena agora em um codigo maior…
Aqui um metodo que vc invoca de um callback
private void iniciarActionPerformed(ActionEvent evt) {
}
[quote=Vingdel]Olá Suellen_Susu,
Repare que você retirou a declaração da seguinte variavel na classe PrincipalTela
private static JLabel lConta;
Inclua ela de volta e faça um teste.
Abraço e bons estudos!
[/quote]
Então Vingdel, fiz o q vc disse, mas ai ele indicava erro no private do netbeans private javax.swing.JLabel lConta;
entao eu vltei o nome do lebal cmo jLabel1, e deu certo, mas nas ações dos botoes, onde estava lConta.método , tive q mudar para jLabel1.método…
e o projeto rodou, só q ñ aparece o cronometro, apenas os botoes, e qndo cliko no botao “iniciar”, ele indica isso:
init:
deps-jar:
Compiling 1 source file to D:\Meus documentos\NetBeansProjects\TimerTeste\build\classes
compile-single:
run-single:
Exception in thread "Thread-3" java.lang.NullPointerException
at timer.Contador.run(Contador.java:49)
CONSTRUÍDO COM SUCESSO (tempo total: 7 segundos)
e ai, o q vc acha q pode ser?
bjoss e obrigada…
Olá Suellen_Susu,
Faça o seguinte, desfaça a alteração que você fez, retirando o 1, deixando JLabel, além disso, retire o private da referência. Ela ficará assim:
javax.swing.JLabel lConta
Claro, certifique-se de tirar todos os 1’s que vc adicionou. A modificação que vocês fez deu certo eliminou o primeiro erro pois vc deixou de usar a referencia com private.
Faça isso e diga-nos o resultado.
Abraço!
Então, ñ deu certo o q vc disse:
pq, primeiro, o private desta linha: private javax.swing.JLabel jLabel;
eu ñ posso tirar, pois é codigo interno do netbeans, posso tirar apenas dessa: private static JLabel lConta;
eu tirei desta segunda linha o private e mudei o nome do meu label para jLabel (sem o 1)…
mas continua o programa a rodar do msmo jeito q expliquei anteriormente, e com o msmo erro…
e agora?
[quote]
bRadoCk wrote:
Igual meu chefe fala, aquele famoso japones: Tivira
[quote]
Suellen_Susu wrote:
Bom saber q o fórum de java existe para falar ao nosso próximo “se vira”, ao invés de cobrir seu real objetivo, q é o de ajudar e ser ajudado…
[/quote][/quote]
Calma moça só fiz um comentario, entendi sua parte, mas tb entendi a par do guialeixo.
Não quis faltar com a educação, estou no forum para ajudar e ser ajudado, como todo mundo nesse forum. se fui sem educação ou indelicado peço desculpas !!!
[quote=Suellen_Susu]Então, ñ deu certo o q vc disse:
pq, primeiro, o private desta linha: private javax.swing.JLabel jLabel;
eu ñ posso tirar, pois é codigo interno do netbeans, posso tirar apenas dessa: private static JLabel lConta;
eu tirei desta segunda linha o private e mudei o nome do meu label para jLabel (sem o 1)…
mas continua o programa a rodar do msmo jeito q expliquei anteriormente, e com o msmo erro…
e agora?
[/quote]
Como assim código interno do netbeans,se for aquele código que ele gera da para alterar sim…
Olá Suellen_Susu,
Faz o seguinte, posta aqui seu código completo que a gente tenta dar um jeito nele. Vai ser muito mais rápido que tentar resolver sem ver o código.
No aguardo, até mais!
[quote=Anime][quote=Suellen_Susu]Então, ñ deu certo o q vc disse:
pq, primeiro, o private desta linha: private javax.swing.JLabel jLabel;
eu ñ posso tirar, pois é codigo interno do netbeans, posso tirar apenas dessa: private static JLabel lConta;
eu tirei desta segunda linha o private e mudei o nome do meu label para jLabel (sem o 1)…
mas continua o programa a rodar do msmo jeito q expliquei anteriormente, e com o msmo erro…
e agora?
[/quote]
Como assim código interno do netbeans,se for aquele código que ele gera da para alterar sim…[/quote]
e como q faço para alterá-lo? pq tentei dar um “backspace” no private, e ñ deu certo…
bjoss e obrigada…
[quote=Vingdel]Olá Suellen_Susu,
Faz o seguinte, posta aqui seu código completo que a gente tenta dar um jeito nele. Vai ser muito mais rápido que tentar resolver sem ver o código.
No aguardo, até mais![/quote]
PrincipalTela:
[code]package timer;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class PrincipalTela extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
private static boolean contador = false;
private static boolean zerado = false;
static JLabel lConta;
public PrincipalTela() {
initComponents();
}
public static boolean isContador(){
return contador;
}
public static boolean isZerado(){
return zerado;
}
public static void setZerado(boolean zero){
zerado = zero;
}
private void iniciarActionPerformed(java.awt.event.ActionEvent evt) {
contador = true;
iniciar.setEnabled(false);
pausar.setEnabled(true);
zerar.setEnabled(false);
}
private void pausarActionPerformed(java.awt.event.ActionEvent evt) {
contador = false;
iniciar.setEnabled(true);
pausar.setEnabled(false);
zerar.setEnabled(true);
}
private void zerarActionPerformed(java.awt.event.ActionEvent evt) {
contador = false;
jLabel.setText("00:00:00");
zerado = true;
jLabel.revalidate();
iniciar.setEnabled(true);
pausar.setEnabled(false);
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
JOptionPane.showMessageDialog(null, "próxima janela!");
new PrincipalTela().setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PrincipalTela().setVisible(true);
Contador cont = new Contador(lConta);
cont.start();
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton iniciar;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel;
private javax.swing.JButton pausar;
private javax.swing.JButton zerar;
// End of variables declaration
}[/code]
Contador:
[code]package timer;
import javax.swing.JLabel;
public class Contador extends Thread{
private JLabel hr;
public Contador(JLabel hora) {
this.hr = hora;
}
@Override
public void run() {
try {
int segundo = 0;
int hora = 0;
int minuto = 0;
while( true ) {
if( PrincipalTela.isContador() ) {
if( PrincipalTela.isZerado() ) {
segundo = 0;
hora = 0;
minuto = 0;
PrincipalTela.setZerado(false);
}
if( segundo == 59 ){
segundo = 00;
minuto = minuto+1;
}
if( minuto == 59 ){
minuto = 00;
hora = hora+1;
}
segundo++;
String timer = completaComZero(hora) + ":" +
completaComZero(minuto) + ":" +
completaComZero(segundo);
this.hr.setText(timer);
this.hr.revalidate();
}
Thread.sleep(1000);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
private String completaComZero(Integer i) {
String retorno = null;
if( i < 10 ) {
retorno = "0"+i;
} else {
retorno = i.toString();
}
return retorno;
}
}
[/code]
[quote=bRadoCk][quote]
bRadoCk wrote:
Igual meu chefe fala, aquele famoso japones: Tivira
Ok, desculpas aceitas (qm sou eu pra ñ desculpar, magiina…)!! tmb peço desculpas, pois acho q devo ter passado a impressão (ao formular minha pergunta), de qrero código pronto, mas realmente ñ era isso…
Vai em propriedades,la vc vai ver code,dentro do code vc pode fazer as alterações.
Suellen, olhando seu código, tem um monte de erros, um monte de coisa faltando.
Pra começar, você não declarou um monte de coisa que vc tenta inicializar no seu código.
Por exemplo, no construtor da classe PrincipalTela, vc tenta chamar o método initComponents(), mas onde está esse método?
public PrincipalTela() {
initComponents();
}
Você precisa repensar seu código inteiro, tem que lembrar que o código do Paulo não foi feito para trabalhar com o seu, vocês precisa torná-lo independente para poder usar junto com o seu.
Outra coisa, você retirou o método montaTela() e disse que não precisava dele, claro que você precisa dele, repare dentro dele que tem muita coisa do JLabel lConta que você ta alegando ter problemas. Se eu fosse você pegaria o código do Paulo e primeiro entenderia cada linha do código e depois tentaria adaptá-lo ao seu projeto.
Um abraço e boa sorte!
Paulo, testei seu codigo aqui e ele é muito interessante, fiz um teste basicao aqui e encontrei um erro. quando ele passa para 2 minutos vc ja anda 1 hora. Da uma olhada na sua classe contador e verifica os IF`s.
Flw.
Se eu achar outro erro te falo.
[quote=gpd38]Paulo, testei seu codigo aqui e ele é muito interessante, fiz um teste basicao aqui e encontrei um erro. quando ele passa para 2 minutos vc ja anda 1 hora. Da uma olhada na sua classe contador e verifica os IF`s.
Flw.
Se eu achar outro erro te falo.[/quote]
eu vi, fiz isso para testar as horas e não prestei atenção
valeu
Bom… sei que a discusão já foi encerrada mas quero deixar meu recado.
Se for para falar procure no google ou algo do tipo, não diga nada.
Se você acha que a pergunta é boba demais para você responder, não responda nada.
A pergunta sendo simples ou não é sempre um problema para quem posta.
Já vi alguns cronomêtros utilizando JLabel mas eu prefiro desenhar no JPanel,
[code]package br.com.mvbos.cron;
import br.com.mvbos.cron.modelo.Config;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
/**
*
@author marcusbecker
*/
public class TimerFrm extends javax.swing.JPanel {
private Calendar calend = Calendar.getInstance();
private Config config;
private Image imagem;
private Font fonte;
private int tempFonteTamanho;
private String tempFonteLetra;
private boolean timerAtivo = true;
public TimerFrm(Config c) {
this.config = c;
initComponents();
calend.set(Calendar.HOUR, config.getHora());
calend.set(Calendar.MINUTE, config.getMinuto());
calend.set(Calendar.SECOND, config.getSegundo());
fonte = new Font(config.getFonte(), Font.PLAIN, config.getTamanhoLetra());
if (c.getFundo() != null) {
imagem = getToolkit().createImage(c.getFundo());
}
tempFonteLetra = config.getFonte();
tempFonteTamanho = config.getTamanhoLetra();
}
public void iniTimer() {
new timer().start();
}
public boolean isTimerAtivo() {
return timerAtivo;
}
public void setTimerAtivo(boolean timerAtivo) {
this.timerAtivo = timerAtivo;
}
private void initComponents() {
setName("Form"); // NOI18N
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 503, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 301, Short.MAX_VALUE)
);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
int x = 10 + (config.getTamanhoLetra() / 8);
int y = 20 + config.getTamanhoLetra();
g.setColor(config.getCor());
if (imagem != null) {
g.drawImage(imagem, 0, 0, this);
}
g.setFont(fonte);
g.drawString(calend.get(Calendar.HOUR) + “:” + calend.get(Calendar.MINUTE) + “:” + calend.get(Calendar.SECOND), x, y);
}
class timer extends Thread {
@Override
public void run() {
while (true) {
try {
int total = calend.get(Calendar.HOUR) + calend.get(Calendar.MINUTE) + calend.get(Calendar.SECOND);
if (!isTimerAtivo() || total == 0) {
break;
}
calend.add(Calendar.SECOND, config.isRegressivo() ? -1 : 1);
if (tempFonteTamanho != config.getTamanhoLetra() || !tempFonteLetra.equals(config.getFonte())) {
fonte = new Font(config.getFonte(), Font.PLAIN, config.getTamanhoLetra());
}
repaint();
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(TimerFrm.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
[/code]
assim tenho mais liberdade e recursos.
Vou postar o meu.
Abs.