qnd realizo a conta, às vezes o resultado é mto grande e acaba expandindo a jlabel. Gostaria de mostrar só dois valores após a vírgula.
Dei uma procurada na internet, mas td o q tentei não deu certo =/.
num tm como colocar máscara numa jlabel né?!
Se o problema for esse, basta vc colocar um JFormattedTextField desabilitado com a mascara, seria bem mais simples para se exibir e ainda mais estiloso. Sem contar na praticidade de se trabalhar.
t+
T
tahinf
se num tiver jeito vou ter q colocar um JFormattedTextField, mas só se num tiver jeito msm… gostaria de mostrar na label msm e tbm queria saber como q faz p colocar só duas casas após a vírgula
brenowbc1 like
olha, não sei se é certo, mas pra mostrar no system.out.println serve.
bem, o conteudo de um JLabel não é uma String??
então tenta isso:
doubleresultado=2.83729101;// so um valor de testeJLabellabel=newJLabel(String.format("%.2f",resultado);o%.2féquereceberaumvalordecasadecimal,ecolocaradoisdigitosapósavirgula(.2f)
o resultado saira 2.83 ou 2.84, depende se vai ter aproximação
um abraço, tomara que resolva.
EDIT: Testei aqui e deu certo com o meu JLabel. Tente ae e veja se ajuda.
T
tahinf
brenowbc,
coloquei desse jeito private JLabel resposta = new JLabel(String.format("%.2f",calc_v)); logo dps do class nomedaclasse…
não dá erro, porém continua aparecendo mais de 10 casas após a vírgula =/
brenowbc
cara, eu testei aqui e deu certo.
você usa qual JDK, não sei ao certo, mas parece que tem que ser maior que da JDK 5 em diante.
eu testei aqui e deu certo, não tou entendendo isso ae não.
qualquer coisa instancia o JLabel vazio, e tenta o método do JLabel :
proooonto cara, ja sei.
como você tem metodos getters pra pegar esses resultados. coloca assim:
publicStringgetValorTruncado(doubleValor){returnString.format("%.2f",Valor);}// ai no JLabel você coloca assim:privateJLabellabel=newJLabel(getValorTruncado(Valor));// sendo esse Valor o Double a ser truncado
tenta isso kra, acho que dá certo.
T
tahinf
publicclassappletextendsJApplet{DrawControlscontrols;publicvoidinit(){setLayout(newBorderLayout());panel=newDrawPanel(null);controls=newDrawControls(panel);add("Center",panel);add("South",controls);}publicvoiddestroy(){remove(panel);remove(controls);}publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("Pêndulo tipo mola");appletdrawTest=newapplet();drawTest.init();drawTest.start();f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.add("Center",drawTest);f.setSize(500,500);f.setVisible(true);}classDrawControlsextendsJPanelimplementsActionListener{//botõesprivateJButtoniniciar=newJButton("Iniciar");privateJButtonpausar=newJButton("Pausar");privateJButtoncontinuar=newJButton("Continuar");//labelprivateJLabeltempo=newJLabel("Tempo");//radiobuttonJRadioButtonvrbutton=newJRadioButton(v);JRadioButtonerbutton=newJRadioButton(el);JRadioButtontrbutton=newJRadioButton(et);DrawPaneltread;Stringget_a,get_w,get_t,get_f,get_k;doublea,w,te,k,f,calc_v,calc_x,calc_a;doublep;[b]privateJLabelresposta=newJLabel(getValorTruncado(calc_v));[/b]publicDrawControls(DrawPaneltarget){GridBagConstraintscons=newGridBagConstraints();GridBagLayoutlayout=newGridBagLayout();JPanelpanel=newJPanel(layout);cons.fill=GridBagConstraints.BOTH;cons.gridy=0;cons.gridx=0;panel.setPreferredSize(newDimension(475,140));setBackground(Color.lightGray);//RAdio ButtonButtonGroupgroup=newButtonGroup();cons.gridx=4;cons.gridy=0;vrbutton.setBackground(Color.lightGray);panel.add(vrbutton,cons);group.add(vrbutton);cons.gridx=4;cons.gridy=1;erbutton.setBackground(Color.lightGray);panel.add(erbutton,cons);group.add(erbutton);vrbutton.addActionListener(this);erbutton.addActionListener(this);trbutton.addActionListener(this);}publicStringget_txta(){returntxta.getText();}publicStringget_txtw(){returntxtw.getText();}publicStringget_txtt(){returntxtt.getText();}publicStringget_txtf(){returntxtf.getText();}publicStringget_txtk(){returntxtk.getText();}publicvoidconverte(){a=Double.parseDouble(get_a);w=Double.parseDouble(get_w);te=Double.parseDouble(get_t);f=Double.parseDouble(get_f);k=Double.parseDouble(get_k);}publicvoidcalcula_v(){calc_v=(-a)*(w*(Math.PI))*Math.sin(((w*(Math.PI))*te)+(f*(Math.PI)));}publicvoidmostra_v(){// String.format("%2.f", calc_v);Stringconv_v=String.valueOf(calc_v);resposta.setText(conv_v);}publicvoidmostra_x(){Stringconv_x=String.valueOf(calc_x);resposta.setText(conv_x);}publicvoidmostra_a(){Stringconv_a=String.valueOf(calc_a);resposta.setText(conv_a);}publicvoidvisible_v(){lblv.setVisible(true);ms.setVisible(true);publicvoidcalcula_mostra_o(){//faz a conta}publicStringgetValorTruncado(doubleValor){returnString.format("%.2f",Valor);}publicvoidactionPerformed(ActionEvente){get_a=get_txta();get_w=get_txtw();get_t=get_txtt();get_f=get_txtf();get_k=get_txtk();converte();calcula_mostra_o();Threadtd=newThread(tread);if(e.getSource()==iniciar){DrawPanelchama=newDrawPanel(this);chama.get_v();td.start();pleasewait=false;}if(e.getSource()==pausar){pleasewait=true;}if(e.getSource()==vrbutton){calcula_v();visible_v();mostra_v();}if(e.getSource()==erbutton){calcula_x();visible_x();mostra_x();}if(e.getSource()==trbutton){calcula_x();calcula_a();visible_a();mostra_a();}}}}
Coloquei p vc entender um pouco melhor, clico no radiobutton e na label resposta aparece o q foi calculado, do jeito q tá ae aparece esse erro Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: Uncompilable source code
obs: num postei o código inteiro pq ia fica mtoo grande, acho q postei o q interessava
brenowbc
então tem que ver direitinho ae, porque um JLabel recebe um String ta ligado, por isso que te mandei aquele codigo,
mas ae ja não sei como fazer direito não.
tou meio apressado, qualquer coisa eu vejo, mas tente ae, um JLabel recebe um String, então deve ta quase chegando,
so ver qual o erro direitinho.
vlw
JM4X
Posta pra gente trecho de codigo proximo a linha que lançou exceção, e qual exceção foi lançada!
String.format só funciona em JDK 1.5 em diante. Se a sua JDK for anterior a essa, terá de achar outra saída.
[]'s
T
tahinf
mals gente.. dá erro qnd coloco assim
public DrawControls(DrawPanel target) {
JLabel resposta = new JLabel(getValorTruncado(calc_v) );
se fizer assim, como tinha postado antes
JLabel resposta = new JLabel(getValorTruncado(calc_v) );
public DrawControls(DrawPanel target) {
não dá erro porém tbm aparece cm mtas casas apos a virgula
to usando o netbeans e nele fala: Java: 1.6.0_20; OpenJDK
brenowbc
ahhhh, as vezes pode ser por causa da OpenJDK.
prefira a JDK original, eu tenho ela aqui, e as dicas que te passei do String.format funcionam tranquilamente.
tente coloca-la.
um abraço
assim num dá erro, mas tbm o q aparece na label é 0,00 (e o resultado conta não é esse )
esse OpenJDK deve ser pq to ubuntu, amanhã testo no win
brenowbc
tou ligado, so que assim, eu testei aqui, e ficou certinho, estranho que não esteja ficando.
tem que ver ae, porque aqui da certo, acho que pode ser a openJDK mesmo, eu usei ela uma vez
e num fui muito com a cara não rsrs.
abrç
JM4X
Se constatar que o motivo da diferença de resultados seria legal enviar essa informação pros caras da OpenJDK…
Assim eles consertariam, e outras pessoas (uma delas pode ser vc mesmo), um dia sendo obrigado a usar OpenJDK, não passaria por isso novamente.
essa foi a última coisa q testei até agora e continua aparecendo só 0,00, a resposta do System.out.println é -0.0
agora to no win, usando o netbeans cm Java: 1.6.0_23; Java HotSpot(TM)
Anime
Oi,
Não sei se é isso que vc quer, mas segue um exemplo…
importjava.io.*;classP30{publicstaticvoidmain(Stringargs[]){Strings;doublenot1,not2,not3,nota,mediap;intpeso1,peso2,peso3;DataInputStreamd;try{System.out.println("Digite a primeira nota entre 0 e 10");d=newDataInputStream(System.in);s=d.readLine();not1=Double.parseDouble(s);System.out.println("Digite o primeiro peso entre 1 e 5");d=newDataInputStream(System.in);s=d.readLine();peso1=Integer.parseInt(s);System.out.println("Digite a segunda nota");d=newDataInputStream(System.in);s=d.readLine();not2=Double.parseDouble(s);System.out.println("Digite o segundo peso");d=newDataInputStream(System.in);s=d.readLine();peso2=Integer.parseInt(s);System.out.println("Digite a terceira nota");d=newDataInputStream(System.in);s=d.readLine();not3=Double.parseDouble(s);System.out.println("Digite o terceiro peso");d=newDataInputStream(System.in);s=d.readLine();peso3=Integer.parseInt(s);System.out.println("A primeira nota digitada foi: "+not1);System.out.println("A segunda nota digitada foi: "+not2);System.out.println("A terceira nota digitada foi: "+not3);System.out.println("O primeiro peso digitado foi: "+peso1);System.out.println("O segundo peso digitado foi: "+peso2);System.out.println("O terceiro peso digitado foi: "+peso3);if((not1>=0&¬1<=10&¬2>=0&¬2<=10&¬3>=0&¬3<=10&&peso1>=1&&peso1<=5&&peso2>=1&&peso2<=5&&peso3>=1&&peso3<=5)){mediap=((not1*peso1)+(not2*peso2)+(not3*peso3))/(peso1+peso2+peso3);mediap=(Math.ceil(mediap*100+0.5)/100);System.out.println("A sua media e: "+mediap);if(mediap<=3.49){System.out.println("REPROVADO");}elseif((mediap>3.49)&&(mediap<=6.49)){System.out.println("RECUPERACAO");}else{System.out.println("APROVADO");}}else{System.out.println("Erro na entrada de dados");}}catch(IOExceptione){System.out.println("erro na entrada de dados");}catch(NumberFormatExceptione){System.out.println("erro de conversão");}}}
T
tahinf
Anime,
não é exatamente isso, gostaria de q aparecesse só duas casas após a vírgual, por exemplo: se fosse 3,689999999884854784, mostrasse só 3,68 ou 3,69
mas obrigada pelo post não conhecia a Math.ceil()
Anime
Oi,
Essa linha faz isso, arredonda o numero com 2 casas decimais…
Anime, cm o Math.ceil msm sendo p arrendondar não deu certo de 3.077873109954864E-14 ele tá indo p um o.O"
to tentando várias coisas, mas por enquanto nenhuma deu certo =/
vou dar uma lida no link q mandou brigada!
T
tahinf
tentando de outro jeito:
if(e.getSource()==vrbutton){// calcula_v();visible_v();//mostra_v();calc_v=(-a)*(w*(Math.PI))*Math.sin(((w*(Math.PI))*te)+(f*(Math.PI)));System.out.println("antes do big "+calc_v);intdecimalPlace=2;BigDecimalbd=newBigDecimal(calc_v);System.out.println("meio do big "+calc_v);bd=bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);calc_v=bd.doubleValue();System.out.println("dps do big "+calc_v);resposta.setText(String.valueOf(calc_v));}
as respostas do prints:
antes do big 3.077873109954864E-14
meio do big 3.077873109954864E-14
dps do big 0.0
testei no netbeans do ubuntu e do windows, nos dois aparece o msm resultado
T
tahinf
OI gente, descobri o erro =D
como o resultado da conta q fazia dava 3.07787310995486 4E-14 acho q dava algum problema na hora de converter (por causa do q tá em negrito), ao invés de usar a Math.pi, coloquei valendo pi = 3.1416 e pra converter: