可能您必须在这里查看documentListener 示例
编辑:
我从第一次接触到就知道了这个问题JFormattedTextField,下面的示例并非一时就可用focusLost:-),并且可能演示了
您的问题
下限是有定在10.000,-两个JFormattedTextField,
1号
JFormattedTextField处理
FocusListener(输出必须延迟到中invokeLater)
2号
JFormattedTextField处理
documentListener(每隔……)
初始外观
这是同样的问题,因为我只在这里放了500,并且重点放在了什么都没有改变,正确的金额必须> =10.000,-
不知道这怎么可能,但是通过将换成来解决
invokeLater(),然后在1st上工作。
focusLost(您必须取消注释这些代码行)
从代码
import java.awt.*;import java.awt.event.*;import java.math.RoundingMode;import java.text.NumberFormat;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;public class FormatterLimit { private Jframe frame = new Jframe(); private JPanel pnl = new JPanel(); private JLabel focusLabel = new JLabel(" focusLost Handle "); private JFormattedTextField formTextField; private JLabel docLabel = new JLabel(" document Handle "); private JFormattedTextField formTextField1; private NumberFormat formTextFieldFormat; private double amount = 10000.00; public FormatterLimit() { formTextFieldFormat = NumberFormat.getNumberInstance(); formTextFieldFormat.setMinimumFractionDigits(2); formTextFieldFormat.setMaximumFractionDigits(2); formTextFieldFormat.setRoundingMode(RoundingMode.HALF_UP); focusLabel.setFont(new Font("Serif", Font.BOLD, 14)); focusLabel.setForeground(Color.blue); focusLabel.setPreferredSize(new Dimension(120, 27)); formTextField = new JFormattedTextField(formTextFieldFormat); formTextField.setValue(amount); formTextField.setFont(new Font("Serif", Font.BOLD, 22)); formTextField.setForeground(Color.black); formTextField.setBackground(Color.yellow); formTextField.setPreferredSize(new Dimension(120, 27)); formTextField.setHorizontalAlignment(SwingConstants.RIGHT); formTextField.addFocusListener(new FocusListener() { @Override public void focusGained(FocusEvent e) { formTextField.requestFocus(); formTextField.setText(formTextField.getText()); formTextField.selectAll(); } @Override public void focusLost(FocusEvent e) { //Runnable doRun = new Runnable() { //@Override //public void run() { double t1a1 = (((Number) formTextField.getValue()).doublevalue()); if (t1a1 < 1000) { formTextField.setValue(amount); } //} // }; //SwingUtilities.invokeLater(doRun); } }); docLabel.setFont(new Font("Serif", Font.BOLD, 14)); docLabel.setForeground(Color.blue); docLabel.setPreferredSize(new Dimension(120, 27)); formTextField1 = new JFormattedTextField(formTextFieldFormat); formTextField1.setValue(amount); formTextField1.setFont(new Font("Serif", Font.BOLD, 22)); formTextField1.setForeground(Color.black); formTextField1.setBackground(Color.yellow); formTextField1.setPreferredSize(new Dimension(120, 27)); formTextField1.setHorizontalAlignment(SwingConstants.RIGHT); formTextField1.addFocusListener(new FocusListener() { @Override public void focusGained(FocusEvent e) { formTextField1.requestFocus(); formTextField1.setText(formTextField1.getText()); formTextField1.selectAll(); } @Override public void focusLost(FocusEvent e) { } }); formTextField1.getdocument().adddocumentListener(docListener); pnl = new JPanel(); pnl.setBorder(new EmptyBorder(2, 2, 2, 2)); pnl.setLayout(new GridLayout(2, 2)); pnl.add(focusLabel); pnl.add(formTextField); pnl.add(docLabel); pnl.add(formTextField1); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); frame.add(pnl, BorderLayout.CENTER); frame.setLocation(200, 200); frame.pack(); frame.setVisible(true); formTextFieldFocus1(); } // private documentListener docListener = new documentListener() { @Override public void changedUpdate(documentEvent documentEvent) { printIt(documentEvent); } @Override public void insertUpdate(documentEvent documentEvent) { printIt(documentEvent); } @Override public void removeUpdate(documentEvent documentEvent) { printIt(documentEvent); } private void printIt(documentEvent documentEvent) { documentEvent.EventType type = documentEvent.getType(); double t1a1 = (((Number) formTextField1.getValue()).doublevalue()); if (t1a1 < 1000) { Runnable doRun = new Runnable() { @Override public void run() { formTextField1.setValue(amount); } }; SwingUtilities.invokeLater(doRun); } } }; private void formTextFieldFocus1() { Runnable doRun = new Runnable() { @Override public void run() { formTextField1.grabFocus(); formTextField1.requestFocus(); formTextField1.setText(formTextField1.getText()); formTextField1.selectAll(); } }; SwingUtilities.invokeLater(doRun); } private void formTextFieldFocus() { Runnable doRun = new Runnable() { @Override public void run() { formTextField.grabFocus(); formTextField.requestFocus(); formTextField.setText(formTextField.getText()); formTextField.selectAll(); formTextFieldFocus1(); } }; SwingUtilities.invokeLater(doRun); } public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { @Override public void run() { FormatterLimit fl = new FormatterLimit(); } }); }}


