展开全部
文本框内容变化,导致按钮的文字变化, 这需32313133353236313431303231363533e59b9ee7ad9431333431353366要使用Listener 去响应和处理文本框内容变化事件.
awt可以使用TextListener;
参考代码import java.awt.*;
import java.awt.event.*;
public class AWTDemo extends Frame implements TextListener{
TextField tf;
Button btn;
public AWTDemo() {
tf = new TextField(8);
tf.addTextListener(this);//
btn = new Button("确定");
add(tf, BorderLayout.NORTH);
add(btn, BorderLayout.SOUTH);
setTitle("文字变化");
setSize(300, 108);
setLocationRelativeTo(null);//居中
//点击右上角的关闭按钮,退出程序
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);;
}
});
}
public static void main(String[] args) {
new AWTDemo().setVisible(true);
}
@Override
public void textValueChanged(TextEvent e) {
btn.setLabel(tf.getText());//文本框发生改变时改变按钮上的文字
}
}
swing版本,需要DocumentListener;具体参考代码如下
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
//本类继承自JFrame.实现了DocumentListener接口
public class SwingDemo extends JFrame implements DocumentListener {
JTextField jtf;
JButton jb;
public SwingDemo() {
jtf = new JTextField(8);
jtf.getDocument().addDocumentListener(this);// 重点是获取Document然后添加Document事件处理器
jb = new JButton("确定");
add(jtf, BorderLayout.NORTH);
add(jb, BorderLayout.SOUTH);
setTitle("文字变化");
setSize(300, 108);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SwingDemo().setVisible(true);
}
@Override
public void removeUpdate(DocumentEvent e) {// 删除
jb.setText(jtf.getText());
}
@Override
public void insertUpdate(DocumentEvent e) {// 插入
jb.setText(jtf.getText());
}
@Override
public void changedUpdate(DocumentEvent e) {// 改变
jb.setText(jtf.getText());
}
}
javaFX 可以使用绑定来实现, 代码量比较少
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFXDemo extends Application {
@Override
public void start(Stage stage) throws Exception {
TextField tf=new TextField("确定");
Button btn=new Button();
VBox root=new VBox(tf,btn);
stage.setScene(new Scene(root, 300, 120));
stage.setTitle("文字变化");
stage.show();
//按钮的文字绑定到文本框上
btn.textProperty().bind(tf.textProperty());
}
public static void main(String[] args) {
launch(args);
}
}