Java开发工程师是怎样炼成的------文本块篇(Text fields)

来源:互联网 发布:php微信分享代码下载 编辑:程序博客网 时间:2024/04/29 23:09

先看看下面的代码:

 

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.PlainDocument;

public class TextFields extends JApplet {
    JButton b1 
= new JButton("Get Text"), b2 = new JButton("Set Text");
    JTextField t1 
= new JTextField(30), t2 = new JTextField(30),t3 = new JTextField(30);
    String s 
= new String();
    UpperCaseDocument ucd 
= new UpperCaseDocument();
    
    
public void init() {
        
//下面的两行:当t1的内容改变,将激活T1函数的操作
        t1.setDocument(ucd);//将编辑器与一个文本文档关联
        ucd.addDocumentListener(new T1());//添加负责通知任何更改的文档侦听器
        b1.addActionListener(new B1());
        b2.addActionListener(
new B2());
        t1.addActionListener(
new T1A());//感觉似乎没有什么大用处
        Container cp = getContentPane();
        cp.setLayout(
new FlowLayout());
        cp.add(b1);
        cp.add(b2);
        cp.add(t1);
        cp.add(t2);
        cp.add(t3);
    }


    
class T1 implements DocumentListener {
        
public void changedUpdate(DocumentEvent e) {
        }

        
public void insertUpdate(DocumentEvent e) {
            t2.setText(t1.getText());
            t3.setText(
"Text: " + t1.getText());
        }

        
public void removeUpdate(DocumentEvent e) {
            t2.setText(t1.getText());
        }

    }


    
class T1A implements ActionListener {
        
private int count = 0;
        
public void actionPerformed(ActionEvent e) {
            t3.setText(
"t1 Action Event " + count++);
        }

    }


    
class B1 implements ActionListener {
        
public void actionPerformed(ActionEvent e) {
            
if (t1.getSelectedText() == null)//获取选择的文本
                s = t1.getText();//获取全部的文本
            else
                s 
= t1.getSelectedText();
            t1.setEditable(
true);
        }

    }


    
class B2 implements ActionListener {
        
public void actionPerformed(ActionEvent e) {
            t1.setText(
"Inserted by Button 2: " + s);
            t1.setEditable(
false);
        }

    }


    
public static void main(String[] args) {
        TextFields applet 
= new TextFields();
        JFrame frame 
= new JFrame(applet.getClass().toString().substring(6));//建立一个名字为Buttons的frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//frame关闭方法
        frame.getContentPane().add(applet);
        applet.init();
        applet.start();
        frame.setSize(
300300);
        frame.setVisible(
true);
    }

}


class UpperCaseDocument extends PlainDocument {
}

需要学习的几个地方:

1、getText();//获取全部的文本;getSelectedText()//获取选择的文本

2、t1.setDocument(ucd);//将编辑器与一个文本文档关联
  ucd.addDocumentListener(new T1());//添加负责通知任何更改的文档侦听器 

  这样,当一个JTextField文本的内容改变时,就可以触发某些事情 DocumentListener接口有三个方法需要实现

 PlainDocument是一个值得大家去研究的对象

原创粉丝点击