首页javajformattedtextfieldJava Swing - 如何创建JFormattedTextField接受不同数量的数字

Java Swing - 如何创建JFormattedTextField接受不同数量的数字

我们想知道如何创建JFormattedTextField接受不同数量的数字。
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Locale;

import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Main {
  JFormattedTextField jft;
  JButton jb = new JButton("but");

  public Main() {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel jl = new JLabel("Try with formatted text field   ");
    Locale local1 = new Locale("en", "US");
    int minFra = 0;
    int maxFra = 3;
    jft = setFormat(jft, local1, minFra, maxFra);
    jft.setMaximumSize(new Dimension(100, 20));
    jft.setMinimumSize(new Dimension(100, 20));
    jft.setPreferredSize(new Dimension(100, 20));

    frame.add(jl);
    frame.add(jft, BorderLayout.NORTH);
    jb.addActionListener(e -> JOptionPane.showMessageDialog(jb,
        "nel text Box : " + jft.getText()));
    frame.pack();
    frame.setVisible(true);
  }
  public static void main(String[] args) {
    new Main();
  }
  private JFormattedTextField setFormat(JFormattedTextField jft, Locale local1,
      int minFra, int maxFra) {
    NumberFormat numberFormat;
    Locale local = local1;
    int setMin = minFra;
    int setMax = maxFra;
    numberFormat = NumberFormat.getCurrencyInstance(local);
    numberFormat.setMinimumFractionDigits(setMin);
    numberFormat.setMaximumFractionDigits(setMax);
    numberFormat.setRoundingMode(RoundingMode.HALF_UP);
    jft = new JFormattedTextField(numberFormat);
    jft.setValue(new Double(342.796));
    return jft;
  }
}