0

//Java swing 新手,需要帮助将第一个 Jtextfield 中的文本显示在 //second second 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

是的,你做得很好。如果在一个动作事件上按顺序发生不止一项工作,那么您需要将序列放入相应的actionPerformed函数中。所以:

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

}
});

JComponents 监听器意味着它们只会在动作事件发生时监听和响应。ActionListener注册到事件源(JCompnent)的实例将通知他们,其addActionListener()功能与您所做的一样。

还有一点需要注意:在声明之前,您不能访问任何语句中的字段。编译器在对其进行任何操作之前需要了解有关该字段的信息。所以你必须myField2在它的访问代码之前声明,例如,myField1函数anonymous 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 回答