Desenvolvedor e Analista de Sistemas | IFPA

quinta-feira, 3 de abril de 2014

JSpinner com casa decimal no padrão Brasileiro "pt", "BR"

com 0 Comentário

  1. package guj;  
  2.   
  3. import java.awt.BorderLayout;  
  4. import java.awt.EventQueue;  
  5. import java.text.DecimalFormatSymbols;  
  6. import java.util.Locale;  
  7.   
  8. import javax.swing.JFrame;  
  9. import javax.swing.JPanel;  
  10. import javax.swing.JSpinner;  
  11. import javax.swing.SpinnerNumberModel;  
  12. import javax.swing.border.EmptyBorder;  
  13. import javax.swing.border.TitledBorder;  
  14.   
  15. public class ExemploJSpinnerFormatado extends JFrame {  
  16.   
  17.     private JPanel contentPane;  
  18.     private JPanel pnlPonto;  
  19.     private JSpinner spinnerPonto;  
  20.     private JPanel pnlVirgula;  
  21.     private JSpinner spinnerVirgula;  
  22.   
  23.     /** 
  24.      * Launch the application. 
  25.      */  
  26.     public static void main(String[] args) {  
  27.         EventQueue.invokeLater(new Runnable() {  
  28.             public void run() {  
  29.                 try {  
  30.                     ExemploJSpinnerFormatado frame = new ExemploJSpinnerFormatado();  
  31.                     frame.setVisible(true);  
  32.                 } catch (Exception e) {  
  33.                     e.printStackTrace();  
  34.                 }  
  35.             }  
  36.         });  
  37.     }  
  38.   
  39.     /** 
  40.      * Create the frame. 
  41.      */  
  42.     public ExemploJSpinnerFormatado() {  
  43.         setTitle("Exemplo JSpinner Formatado");  
  44.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  45.         setBounds(100100360195);  
  46.         contentPane = new JPanel();  
  47.         contentPane.setBorder(new EmptyBorder(5555));  
  48.         contentPane.setLayout(new BorderLayout(00));  
  49.         setContentPane(contentPane);  
  50.         contentPane.add(getPnlPonto(), BorderLayout.NORTH);  
  51.         contentPane.add(getPnlVirgula(), BorderLayout.SOUTH);  
  52.     }  
  53.   
  54.     private JPanel getPnlPonto() {  
  55.         if (pnlPonto == null) {  
  56.             pnlPonto = new JPanel();  
  57.             pnlPonto.setBorder(new TitledBorder(null"JSpinner com Ponto Decimal", TitledBorder.LEADING, TitledBorder.TOP, null,  
  58.                     null));  
  59.             pnlPonto.add(getSpinnerPonto());  
  60.         }  
  61.         return pnlPonto;  
  62.     }  
  63.   
  64.     private JSpinner getSpinnerPonto() {  
  65.         if (spinnerPonto == null) {  
  66.             spinnerPonto = new JSpinner();  
  67.             spinnerPonto.setModel(new SpinnerNumberModel(0.00.0100.00.01));  
  68.             JSpinner.NumberEditor ne_spinnerPonto = new JSpinner.NumberEditor(spinnerPonto, "0.00");  
  69.             ne_spinnerPonto.getFormat().setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US));  
  70.             spinnerPonto.setEditor(ne_spinnerPonto);  
  71.         }  
  72.         return spinnerPonto;  
  73.     }  
  74.   
  75.     private JPanel getPnlVirgula() {  
  76.         if (pnlVirgula == null) {  
  77.             pnlVirgula = new JPanel();  
  78.             pnlVirgula.setBorder(new TitledBorder(null"JSpinner com V\u00EDrgula Decimal", TitledBorder.LEADING,  
  79.                     TitledBorder.TOP, nullnull));  
  80.             pnlVirgula.add(getSpinnerVirgula());  
  81.         }  
  82.         return pnlVirgula;  
  83.     }  
  84.   
  85.     private JSpinner getSpinnerVirgula() {  
  86.         if (spinnerVirgula == null) {  
  87.             spinnerVirgula = new JSpinner();  
  88.             spinnerVirgula.setModel(new SpinnerNumberModel(0.00.0100.00.01));  
  89.             JSpinner.NumberEditor ne_spinnerVirgula = new JSpinner.NumberEditor(spinnerVirgula, "0.00");  
  90.             ne_spinnerVirgula.getFormat().setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(newLocale("pt""BR")));  
  91.             spinnerVirgula.setEditor(ne_spinnerVirgula);  
  92.         }  
  93.         return spinnerVirgula;  
  94.     }  
  95. }  


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).

+1

0 comentários :

Postar um comentário

Total de visualizações