Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6468629
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T05:54:27+00:00 2026-05-25T05:54:27+00:00

I have a jFormattedTextField and I set setCommitsOnValidEdit to true then I added an

  • 0

I have a jFormattedTextField and I set setCommitsOnValidEdit to true then I added an event listener to “property change” on “value” property.

At first focus of that jFormattedTextField it doesn’t call event listener method when typing in it. But on “focusLost” it calls event listener and after that when it receives focus again it calls event listener when typing.

I want the event listener be called after any change in any time in that jFormattedTextField (Even in the fist focus).

What’s the problem? How can I fix it?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T05:54:27+00:00Added an answer on May 25, 2026 at 5:54 am

    probably you have to look at DocumentListener example here

    EDIT:

    I know this issue from my 1st touch of JFormattedTextField, here comings example that isn’t works at firts focusLost 🙂 and probably demonstrated your issue

    minimum limit is there set at 10.000,- for both JFormattedTextField,

    1st. JFormattedTextField handling FocusListener (output must be delayed into invokeLater)

    2nd. JFormattedTextField handling DocumentListener (works every…)

    inital look

    enter image description here

    here is same problem, because I put here only 500,- and on focusLost nothing changed, correct amount must be >= 10.000,-

    enter image description here

    on 2dn. focusLost works ….

    enter image description here

    no idea how is that possible, but solved by wrapping into invokeLater(), then works on 1st. focusLost (you have to uncomment these code lines)

    from code

    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();
                }
            });
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

First I would like to say that I have only worked with java for
I have a JFormattedTextField that I use to restrict entries of a date and
I would like to format a float number as a percent-value with JFormattedTextField that
I have jFormatted field with name jFormattedTextField3 in First.java file. the value in this
have a problem. At first look at this HTML <div id=map style=background-image: url(map.png); width:
I have a field as: jFormattedTextFieldGrossWeight = new javax.swing.JFormattedTextField(); jFormattedTextFieldGrossWeight.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat(#,##0.00)))); I
Have such user_session model: class UserSession < Authlogic::Session::Base logout_on_timeout true # default if false
Have a simple form that has a PictureBox in one location. I want to
I have a small Java desktop app that uses Swing. There is a data
Have a chat room, issue is, is that when you submit something, the message

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.