[RESOLVIDOJSpinner, como mudar o simbolo decimal de "." para ","?
3 respostas
K
kerberos2002
Estou com dificuldades para formatar a saida desse componente, eu quero mostrar o simbolo de decimal de “,” para “.” mas só aparece o “.” no valor inicial “0.00” se eu uso as flechinhas do Spinner os numeros voltam usando “,” para separar a virgula.
JSpinner spteta = new JSpinner();
JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spteta,"0,00");
DecimalFormat format = editor.getFormat();
//leio conf local
Locale myLocale = new Locale("pt", "BR");
DecimalFormatSymbols decimalSymbol = new DecimalFormatSymbols(myLocale);
// mudo configuracao local
decimalSymbol.setDecimalSeparator('.');
decimalSymbol.setGroupingSeparator(',');
format.setDecimalFormatSymbols(decimalSymbol);
spteta.setEditor(editor);
.
.
.
//adiciono componente ao painel
Depois de muita tentativa e erro, cheguei a este resultado:
packageguj;importjava.awt.BorderLayout;importjava.awt.EventQueue;importjava.text.DecimalFormatSymbols;importjava.util.Locale;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JSpinner;importjavax.swing.SpinnerNumberModel;importjavax.swing.border.EmptyBorder;importjavax.swing.border.TitledBorder;publicclassExemploJSpinnerFormatadoextendsJFrame{privateJPanelcontentPane;privateJPanelpnlPonto;privateJSpinnerspinnerPonto;privateJPanelpnlVirgula;privateJSpinnerspinnerVirgula;/** * Launch the application. */publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{ExemploJSpinnerFormatadoframe=newExemploJSpinnerFormatado();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/** * Create the frame. */publicExemploJSpinnerFormatado(){setTitle("Exemplo JSpinner Formatado");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,360,195);contentPane=newJPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));contentPane.setLayout(newBorderLayout(0,0));setContentPane(contentPane);contentPane.add(getPnlPonto(),BorderLayout.NORTH);contentPane.add(getPnlVirgula(),BorderLayout.SOUTH);}privateJPanelgetPnlPonto(){if(pnlPonto==null){pnlPonto=newJPanel();pnlPonto.setBorder(newTitledBorder(null,"JSpinner com Ponto Decimal",TitledBorder.LEADING,TitledBorder.TOP,null,null));pnlPonto.add(getSpinnerPonto());}returnpnlPonto;}privateJSpinnergetSpinnerPonto(){if(spinnerPonto==null){spinnerPonto=newJSpinner();spinnerPonto.setModel(newSpinnerNumberModel(0.0,0.0,100.0,0.01));JSpinner.NumberEditorne_spinnerPonto=newJSpinner.NumberEditor(spinnerPonto,"0.00");ne_spinnerPonto.getFormat().setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US));spinnerPonto.setEditor(ne_spinnerPonto);}returnspinnerPonto;}privateJPanelgetPnlVirgula(){if(pnlVirgula==null){pnlVirgula=newJPanel();pnlVirgula.setBorder(newTitledBorder(null,"JSpinner com V\u00EDrgula Decimal",TitledBorder.LEADING,TitledBorder.TOP,null,null));pnlVirgula.add(getSpinnerVirgula());}returnpnlVirgula;}privateJSpinnergetSpinnerVirgula(){if(spinnerVirgula==null){spinnerVirgula=newJSpinner();spinnerVirgula.setModel(newSpinnerNumberModel(0.0,0.0,100.0,0.01));JSpinner.NumberEditorne_spinnerVirgula=newJSpinner.NumberEditor(spinnerVirgula,"0.00");ne_spinnerVirgula.getFormat().setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(newLocale("pt","BR")));spinnerVirgula.setEditor(ne_spinnerVirgula);}returnspinnerVirgula;}}
O JSpinner ou o NumberEditor deveria ter um construtor que aceitasse um NumberFormat - aí você poderia passar um NumberFormat em vez de ficar fazendo essas coisas nojentas (eu tentei umas 6 coisas diferentes até chegar ao resultado acima).
K
kerberos2002
Valeu entanglement! Profissional teu post, fonte, gif do resultado e até link de download :thumbup:
Realmente apesar de gostar muito de programar em Java (programava em C++ e assembler), eu percebo que algumas coisas que do ponto de vista do usuário são simples (mudar o formato de vírgula para ponto é um bom exemplo) e não obstante tem que escrever um “sistema operacional” de código para fazê-lo. E a documentação da Oracle é horrivel, só dá o básico do básico mesmo…
O que nos salva é a comunidade (O GUJ incluso) que é grande e ativa, sempre buscando e discutindo soluções.
L
lina
Oi,
Interessante. Nunca precisei fazer isso. Já está anotado