- package guj;
- import java.awt.BorderLayout;
- import java.awt.EventQueue;
- import java.text.DecimalFormatSymbols;
- import java.util.Locale;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JSpinner;
- import javax.swing.SpinnerNumberModel;
- import javax.swing.border.EmptyBorder;
- import javax.swing.border.TitledBorder;
- public class ExemploJSpinnerFormatado extends JFrame {
- private JPanel contentPane;
- private JPanel pnlPonto;
- private JSpinner spinnerPonto;
- private JPanel pnlVirgula;
- private JSpinner spinnerVirgula;
- /**
- * Launch the application.
- */
- public static void main(String[] args) {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- try {
- ExemploJSpinnerFormatado frame = new ExemploJSpinnerFormatado();
- frame.setVisible(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- /**
- * Create the frame.
- */
- public ExemploJSpinnerFormatado() {
- setTitle("Exemplo JSpinner Formatado");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setBounds(100, 100, 360, 195);
- contentPane = new JPanel();
- contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
- contentPane.setLayout(new BorderLayout(0, 0));
- setContentPane(contentPane);
- contentPane.add(getPnlPonto(), BorderLayout.NORTH);
- contentPane.add(getPnlVirgula(), BorderLayout.SOUTH);
- }
- private JPanel getPnlPonto() {
- if (pnlPonto == null) {
- pnlPonto = new JPanel();
- pnlPonto.setBorder(new TitledBorder(null, "JSpinner com Ponto Decimal", TitledBorder.LEADING, TitledBorder.TOP, null,
- null));
- pnlPonto.add(getSpinnerPonto());
- }
- return pnlPonto;
- }
- private JSpinner getSpinnerPonto() {
- if (spinnerPonto == null) {
- spinnerPonto = new JSpinner();
- spinnerPonto.setModel(new SpinnerNumberModel(0.0, 0.0, 100.0, 0.01));
- JSpinner.NumberEditor ne_spinnerPonto = new JSpinner.NumberEditor(spinnerPonto, "0.00");
- ne_spinnerPonto.getFormat().setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US));
- spinnerPonto.setEditor(ne_spinnerPonto);
- }
- return spinnerPonto;
- }
- private JPanel getPnlVirgula() {
- if (pnlVirgula == null) {
- pnlVirgula = new JPanel();
- pnlVirgula.setBorder(new TitledBorder(null, "JSpinner com V\u00EDrgula Decimal", TitledBorder.LEADING,
- TitledBorder.TOP, null, null));
- pnlVirgula.add(getSpinnerVirgula());
- }
- return pnlVirgula;
- }
- private JSpinner getSpinnerVirgula() {
- if (spinnerVirgula == null) {
- spinnerVirgula = new JSpinner();
- spinnerVirgula.setModel(new SpinnerNumberModel(0.0, 0.0, 100.0, 0.01));
- JSpinner.NumberEditor ne_spinnerVirgula = new JSpinner.NumberEditor(spinnerVirgula, "0.00");
- ne_spinnerVirgula.getFormat().setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(newLocale("pt", "BR")));
- spinnerVirgula.setEditor(ne_spinnerVirgula);
- }
- return spinnerVirgula;
- }
- }
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).
0 comentários :
Postar um comentário