私の質問は、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