我的问题是,当我在 jtextfield 中插入名字时,该记录的相应姓氏会自动显示在另一个 jtextfield 中吗?
这意味着我不想一次又一次地插入相同的数据..一旦我在数据库中插入记录,下次在下一个表单中自动插入相同的记录
所以有人在这里给我片段吗?提前致谢
我的问题是,当我在 jtextfield 中插入名字时,该记录的相应姓氏会自动显示在另一个 jtextfield 中吗?
这意味着我不想一次又一次地插入相同的数据..一旦我在数据库中插入记录,下次在下一个表单中自动插入相同的记录
所以有人在这里给我片段吗?提前致谢
@MirroredFate(在此处的另一个答案中发表评论)永远不要使用 KeyListener,使用 DocumentListener,然后您可以在 JTextComponents 中确定所有可能的用户输入类型
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class TextLabelMirror {
private JPanel mainPanel = new JPanel();
private JTextField field = new JTextField(20);
private JTextField field1 = new JTextField(20);
public TextLabelMirror() {
field.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent e) {
updateLabel(e);
}
@Override
public void insertUpdate(DocumentEvent e) {
updateLabel(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
updateLabel(e);
}
private void updateLabel(DocumentEvent e) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
field1.setText(field.getText());
}
});
}
});
mainPanel.setLayout(new GridLayout(1, 0, 10, 0));
mainPanel.add(field);
mainPanel.add(field1);
}
public JComponent getComponent() {
return mainPanel;
}
private static void createAndShowUI() {
JFrame frame = new JFrame("TextLabelMirror");
frame.getContentPane().add(new TextLabelMirror().getComponent());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowUI();
}
});
}
}
你真的想看看这个文档:http ://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html
您的代码将如下所示:
JTextField firstName = new JTextField();
JTextField lastName = new JTextField();
KeyListener kl = MyCustomKeyListener();
firstName.addKeyListener(kl);
在您的自定义KeyListener
中,重写keyTyped()
查找 的值的方法firstName
,在数据库中查找以找到对应的姓氏,然后使用它来设置 的值lastName
。
通过这种方式,您可以使每次键入键时都会执行此操作,或者您可以检查并确保只有特定键触发操作(例如按return
)。
另外,我应该提到您可以为此使用匿名类。而不是创建MyCustomKeyListener
,你可以说:
firstName.addKeyListener(new KeyListener(){
void keyTyped(keyEvent e){
//whatever you want to happen when the key is typed in here
}
});
编辑:正如已经指出的那样,使用DocumentListener
. 这是通过访问底层 JTextField 的文档并向其中添加侦听器来完成的,如此处的答案所示:Value Change Listener to JTextField