Using FocusListener to retrieve contents from JTextField and populate other JTextFields
I have a number of components in my window, most of them JTextFields. To save the user time in entering data, I am trying to parse the contents of the first JTextField when populated, and put suggested values into subsequent JTextFields.
I have added a FocusListener to the first JTextField, and in focusLost() I retrieve its contents and then set the contents of the subsequent JTextFields. This works correctly the first time the application is used. However on subsequent tasks (i.e. after all the data has been processed and the fields cleared) it usually (but not always) fails. Debugging is difficult with focus issues so I have resorted to logging instead and can see that in the failing cases the getText() method on the first JTextField is returning null. This must be a timing issue but I cannot see a way round it.
The focusLost() method begins...
@Override
public void focusLost(FocusEvent e) {
// On losing focus of the title field attempt to populate all the other
// resource detail fields
Component rawComponent = e.getComponent();
if (this.resourceTitleTextField == rawComponent) {
JTextField component = (JTextField) rawComponent;
String title = component.getText();
LOGGER.info("title = " + title);
jtextfield focuslistener
add a comment |
I have a number of components in my window, most of them JTextFields. To save the user time in entering data, I am trying to parse the contents of the first JTextField when populated, and put suggested values into subsequent JTextFields.
I have added a FocusListener to the first JTextField, and in focusLost() I retrieve its contents and then set the contents of the subsequent JTextFields. This works correctly the first time the application is used. However on subsequent tasks (i.e. after all the data has been processed and the fields cleared) it usually (but not always) fails. Debugging is difficult with focus issues so I have resorted to logging instead and can see that in the failing cases the getText() method on the first JTextField is returning null. This must be a timing issue but I cannot see a way round it.
The focusLost() method begins...
@Override
public void focusLost(FocusEvent e) {
// On losing focus of the title field attempt to populate all the other
// resource detail fields
Component rawComponent = e.getComponent();
if (this.resourceTitleTextField == rawComponent) {
JTextField component = (JTextField) rawComponent;
String title = component.getText();
LOGGER.info("title = " + title);
jtextfield focuslistener
As an update to this. I was unable to solve this the "correct" way so I have instead moved the logic to the focusGained() method and execute it on the next field in the tab order. It now works correctly, although of course I am dependant on the user tabbing through fields (or at least moving between them in the "standard" order) so this is not a perfect answer. Hence I'd still love to solve the initial problem.
– Mark
Jan 2 at 16:16
Please post the full (relevant) code. ThisfocusLost
approach should work. So, I guess you are making a mistake somewhere. If possible, post Minimal, Complete, and Verifiable example.
– Prasad Karunagoda
Jan 8 at 12:36
add a comment |
I have a number of components in my window, most of them JTextFields. To save the user time in entering data, I am trying to parse the contents of the first JTextField when populated, and put suggested values into subsequent JTextFields.
I have added a FocusListener to the first JTextField, and in focusLost() I retrieve its contents and then set the contents of the subsequent JTextFields. This works correctly the first time the application is used. However on subsequent tasks (i.e. after all the data has been processed and the fields cleared) it usually (but not always) fails. Debugging is difficult with focus issues so I have resorted to logging instead and can see that in the failing cases the getText() method on the first JTextField is returning null. This must be a timing issue but I cannot see a way round it.
The focusLost() method begins...
@Override
public void focusLost(FocusEvent e) {
// On losing focus of the title field attempt to populate all the other
// resource detail fields
Component rawComponent = e.getComponent();
if (this.resourceTitleTextField == rawComponent) {
JTextField component = (JTextField) rawComponent;
String title = component.getText();
LOGGER.info("title = " + title);
jtextfield focuslistener
I have a number of components in my window, most of them JTextFields. To save the user time in entering data, I am trying to parse the contents of the first JTextField when populated, and put suggested values into subsequent JTextFields.
I have added a FocusListener to the first JTextField, and in focusLost() I retrieve its contents and then set the contents of the subsequent JTextFields. This works correctly the first time the application is used. However on subsequent tasks (i.e. after all the data has been processed and the fields cleared) it usually (but not always) fails. Debugging is difficult with focus issues so I have resorted to logging instead and can see that in the failing cases the getText() method on the first JTextField is returning null. This must be a timing issue but I cannot see a way round it.
The focusLost() method begins...
@Override
public void focusLost(FocusEvent e) {
// On losing focus of the title field attempt to populate all the other
// resource detail fields
Component rawComponent = e.getComponent();
if (this.resourceTitleTextField == rawComponent) {
JTextField component = (JTextField) rawComponent;
String title = component.getText();
LOGGER.info("title = " + title);
jtextfield focuslistener
jtextfield focuslistener
asked Jan 1 at 5:31
MarkMark
62
62
As an update to this. I was unable to solve this the "correct" way so I have instead moved the logic to the focusGained() method and execute it on the next field in the tab order. It now works correctly, although of course I am dependant on the user tabbing through fields (or at least moving between them in the "standard" order) so this is not a perfect answer. Hence I'd still love to solve the initial problem.
– Mark
Jan 2 at 16:16
Please post the full (relevant) code. ThisfocusLost
approach should work. So, I guess you are making a mistake somewhere. If possible, post Minimal, Complete, and Verifiable example.
– Prasad Karunagoda
Jan 8 at 12:36
add a comment |
As an update to this. I was unable to solve this the "correct" way so I have instead moved the logic to the focusGained() method and execute it on the next field in the tab order. It now works correctly, although of course I am dependant on the user tabbing through fields (or at least moving between them in the "standard" order) so this is not a perfect answer. Hence I'd still love to solve the initial problem.
– Mark
Jan 2 at 16:16
Please post the full (relevant) code. ThisfocusLost
approach should work. So, I guess you are making a mistake somewhere. If possible, post Minimal, Complete, and Verifiable example.
– Prasad Karunagoda
Jan 8 at 12:36
As an update to this. I was unable to solve this the "correct" way so I have instead moved the logic to the focusGained() method and execute it on the next field in the tab order. It now works correctly, although of course I am dependant on the user tabbing through fields (or at least moving between them in the "standard" order) so this is not a perfect answer. Hence I'd still love to solve the initial problem.
– Mark
Jan 2 at 16:16
As an update to this. I was unable to solve this the "correct" way so I have instead moved the logic to the focusGained() method and execute it on the next field in the tab order. It now works correctly, although of course I am dependant on the user tabbing through fields (or at least moving between them in the "standard" order) so this is not a perfect answer. Hence I'd still love to solve the initial problem.
– Mark
Jan 2 at 16:16
Please post the full (relevant) code. This
focusLost
approach should work. So, I guess you are making a mistake somewhere. If possible, post Minimal, Complete, and Verifiable example.– Prasad Karunagoda
Jan 8 at 12:36
Please post the full (relevant) code. This
focusLost
approach should work. So, I guess you are making a mistake somewhere. If possible, post Minimal, Complete, and Verifiable example.– Prasad Karunagoda
Jan 8 at 12:36
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993209%2fusing-focuslistener-to-retrieve-contents-from-jtextfield-and-populate-other-jtex%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993209%2fusing-focuslistener-to-retrieve-contents-from-jtextfield-and-populate-other-jtex%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
As an update to this. I was unable to solve this the "correct" way so I have instead moved the logic to the focusGained() method and execute it on the next field in the tab order. It now works correctly, although of course I am dependant on the user tabbing through fields (or at least moving between them in the "standard" order) so this is not a perfect answer. Hence I'd still love to solve the initial problem.
– Mark
Jan 2 at 16:16
Please post the full (relevant) code. This
focusLost
approach should work. So, I guess you are making a mistake somewhere. If possible, post Minimal, Complete, and Verifiable example.– Prasad Karunagoda
Jan 8 at 12:36