0

//Java Swing は初めてで、最初の Jtextfield のテキストを //2 番目の jtextfield に表示するには助けが必要ですか???? 私は若く、Java を始めたばかりで、助けが必要です。以下は私がすでに行ったコードです

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class lab4 extends JFrame implements ActionListener {

    int numClicks = 0;
    String text = null;

    public lab4() {
        setSize(1200, 700);
        setVisible(true);
        JButton button = new JButton("Hello i am a button");
        button.addActionListener(this);
        JPanel panel = new JPanel();
        panel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));

        panel.add(button);
        this.add(panel);

        JMenuBar menubar = new JMenuBar();
        this.setJMenuBar(menubar);
        JMenu file = new JMenu("File");
        menubar.add(file);
        JMenuItem open = new JMenuItem("Open File");
        file.add(open);

        final JTextField myField = new JTextField(10);
        myField.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String text = myField.getText();
//System.out.println("Hello");

            }
        });

        final JTextField myField2 = new JTextField(10);
        yField2.setText(myField.getText());
        panel.add(myField);

        panel.add(myField2);
        setVisible(true);
    }
}

    public static void main(String[] args) {
        new lab4();

    }

    public void actionPerformed(ActionEvent e) {
        numClicks++;
        System.out.println("The button has been clicked " + numClicks + " times");

    }
}
4

2 に答える 2

4

はい、順調です。1 つのアクション イベントで複数の作業が連続して発生する場合は、対応する関数内にシーケンスを配置する必要がありactionPerformedます。そう:

myField.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    String text = myField.getText();
    myField2.setText(text);

}
});

JComponents リスナーは、アクション イベントが発生した場合にのみリッスンして応答することを意味します。それらは、あなたが行ったように関数でActionListener登録されたイベントソース(JCompnent)のインスタンスによって通知されます。addActionListener()

注意すべきもう 1 つのこと: ステートメントを宣言する前に、フィールドにアクセスすることはできません。コンパイラは、フィールドで何かを行う前に、フィールドに関する情報を知る必要があります。したがって、の関数myField2など、そのアクセス コードの前に宣言する必要があります。myField1anonymous class ActionListener actionPerformed

チュートリアルのリソース:

  1. イベント リスナーの作成
  2. 匿名クラス
于 2013-10-31T05:29:22.877 に答える
2

モデルを共有できます:

JTextField textField1 = new JTextField(...);
JTextField textField2 = new JTextField(...);
textField2.setDocument( textField1.getDocument() ):

いずれかのテキスト フィールドにテキストを入力すると、もう一方も更新されます。

于 2013-10-31T05:29:38.833 に答える