Duplicate :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
Name: yyT116575 Date: 03/12/2001 C:\>java -version java version "1.3.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-C) Java HotSpot(TM) Client VM (build 1.3.0-C, mixed mode) The cursor for a password field does not seem to be correctly reset for a when the field is cleared using setText(""). Please run the following code to see this problem. /** * Simple class to demonstrate a problem (?) with JPasswordField. * Problem detected on an NT machine running Java version: * * C:\>java -version * java version "1.3.0" * Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-C) * Java HotSpot(TM) Client VM (build 1.3.0-C, mixed mode) * * The problem: The cursor does not seem to be correctly reset for a * JPasswordField when the field is cleared using setText("") * * To replicate: Run this class. A dialog is shown 3 times. It prompts * for a user-id and a password. * * When appears for the first time, enter any text (say 5 or 6 chars) * at BOTH the user-id and password fields. Press the OK button. * * When the dialog appears for the SECOND time, enter some text at * the user-id field and then TAB (ie: do NOT use the mouse) to the * password field. Note that the cursor is NOT at the start of the * field, but is still at the end of the previously entered text for * the field, even through the text is no longer displayed!! * * The third display of the dialog is just an example of using the * Caret of the JPasswordField to force it to display correctly when * you TAB to the password field. * * This problem may (??) be related to bug 4139009 */ import java.awt.*; import javax.swing.*; import javax.swing.text.*; public class TestPwdProblem extends JFrame { private JPanel TestPwdPanel; private JTextField idText; private JPasswordField pwdText; public static void main(String[] args) { int val; TestPwdProblem tpp = new TestPwdProblem(); val = JOptionPane.showOptionDialog(tpp, tpp.getPanel(), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); tpp.resetThatFails(); // 'Clear' the user-id and password fields! val = JOptionPane.showOptionDialog(tpp, tpp.getPanel(), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); tpp.resetThatWorks(); val = JOptionPane.showOptionDialog(tpp, tpp.getPanel(), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); } public TestPwdProblem() { TestPwdPanel = new JPanel(); idText = new JTextField(20); pwdText = new JPasswordField(20); JLabel idLabel = new JLabel("User id"); JLabel pwdLabel = new JLabel("Password"); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); TestPwdPanel.setLayout(gbl); gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.WEST; gbc.insets = new Insets(4, 4, 4, 10); gbl.setConstraints(idLabel, gbc); TestPwdPanel.add(idLabel); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.insets = new Insets(4, 0, 4, 4); gbl.setConstraints(idText, gbc); TestPwdPanel.add(idText); gbc.gridwidth = 1; gbc.insets = new Insets(0, 4, 4, 10); gbl.setConstraints(pwdLabel, gbc); TestPwdPanel.add(pwdLabel); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(0, 0, 4, 4); gbl.setConstraints(pwdText, gbc); TestPwdPanel.add(pwdText); } public JPanel getPanel() { return (TestPwdPanel); } public void resetThatFails() { idText.setText(""); pwdText.setText(""); } public void resetThatWorks() { idText.setText(""); pwdText.setText(""); Caret c = pwdText.getCaret(); c.setDot(0); } } (Review ID: 118355) ======================================================================
|