-1

私の質問は、jtextfield に名を挿入すると、このレコードの対応する姓が別の jtextfield に自動的に表示されることです。

つまり、同じデータを何度も挿入したくないということです。データベースにレコードを挿入すると、次回同じレコードが次のフォームに自動的に挿入されます

誰か私にスニペットをくれませんか?前もって感謝します

4

2 に答える 2

3

@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();
            }
        });
    }
}
于 2013-04-05T06:50:05.087 に答える
0

あなたは本当にこのドキュメントをチェックしたい: 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()firstNamelastName

このようにして、キーが入力されるたびにこれが実行されるようにするか、特定のキーのみがアクションをトリガーすることを確認して確認することができます (押すなど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

于 2013-04-05T06:10:22.237 に答える