[JavaSwing] JTextField的

内容
创建简单的JTextField
拍摄, 从JTextField中的数据集
对齐和捕获的JTextField事件
其他的一些方法

JTextField的 是一种功能,允许用户输入文本行. 通常用于与简要信息数据录入.
JTextField的
在上图中,我们有 4 的JTextField以允许用户输入 4 相应的信息 4 的JLabel 在左侧.

例 1: 创建简单的JTextField

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package nguyenvanquan7826.JTextField;
 
import java.awt.GridLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
 
public class MyJTextField extends JFrame {
    public MyJTextField() {
        // create JFrame
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(2, 1, 5, 5));
 
        // create and add JTextField
        JTextField tf = new JTextField(20);
        add(tf);
 
        // add a JButton
        add(new JButton("Ok"));
 
        // Display JFrame
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
 
    public static void main(String[] args) {
        new MyJTextField();
    }
}

创造了JTextField
JTextField的构造
– JTextField的(): 创造新 1 JTextField的
JTextField的(DOC文档, 文本字符串, INT列): 创建 1 使用文本存储模型文本和列的JTextField (coloumns)
JTextField的(INT列): 创建JTextField的宽度栏空白
JTextField的(文本字符串): 与给定的文本创建的JTextField
JTextField的(文本字符串, INT列): JTextField中的文字和给定的宽度创建.

例 2: 拍摄, 从JTextField中放置和处理数据

在这个例子中,我们会做 1 小的演示像所有的开放形象, 更 1 JButton的 重新输入数据 – 一个演示计算的利息 (没有通知如果数据是错误的,但会自动跳转到了JTextField,如果它没有数据).

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
package nguyenvanquan7826.JTextField;
 
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
 
public class TienLai extends JFrame implements ActionListener {
    private JTextField tfTienGui, tfLaiXuat, tfThang, tfTienLai;
 
    public TienLai() {
        // ------------ create JFrame ------------ //
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(5, 2, 5, 5));
 
        // ------------ add content ------------ //
 
        int size = 15;
        add(new JLabel("Tiền gửi"));
        tfTienGui = new JTextField(size);
        add(tfTienGui);
 
        add(new JLabel("Lãi xuất / Tháng"));
        tfLaiXuat = new JTextField(size);
        add(tfLaiXuat);
 
        add(new JLabel("Tháng"));
        tfThang = new JTextField(size);
        add(tfThang);
 
        add(new JLabel("Tiền lãi"));
        tfTienLai = new JTextField(size);
        tfTienLai.setEditable(false);// khong cho phep nhap du lieu
        add(tfTienLai);
 
        add(createJButton("Tính"));
        add(createJButton("Nhập lại"));
 
        // ------------ display ------------
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
 
    private JButton createJButton(String buttonName) {
        JButton btn = new JButton(buttonName);
        btn.addActionListener(this);
        return btn;
    }
 
    public static void main(String[] args) {
        new TienLai();
    }
 
    private void process() {
        // check data
        String text = tfTienGui.getText();
        double tienGui = 0, tienLai = 0, thang = 0, laiXuat = 0;
 
        // tien gui
        if (text.equals("")) {
            tfTienGui.requestFocus(); // nhay den de nhap tien gui
        } else {
            tienGui = Double.parseDouble(text);
 
            // lai xuat
            text = tfLaiXuat.getText();
            if (text.equals("")) {
                tfLaiXuat.requestFocus(); // nhay den de nhap lai xuat
            } else {
                laiXuat = Double.parseDouble(text);
 
                // thang
                text = tfThang.getText();
                if (text.equals("")) {
                    tfThang.requestFocus(); // nhay den de nhap thang
                } else {
                    thang = Integer.parseInt(tfThang.getText());
                }
            }
        }
 
        // process data
        double lai = tienGui * laiXuat * thang;
        tfTienLai.setText(String.valueOf(lai)); // hien thi ket qua
    }
 
    private void clear() {
        tfTienGui.setText("");
        tfTienGui.requestFocus(); // nhay ve de nha tien gui
        tfLaiXuat.setText("");
        tfThang.setText("");
        tfTienLai.setText("");
    }
 
    // methods of ActionListener
    @Override
    public void actionPerformed(ActionEvent evt) {
        String command = evt.getActionCommand();
        if (command == "Tính") {
            process();
        }
        if (command == "Nhập lại") {
            clear();
        }
    }
}

得到的JTextField的数据
非常了不起的
要检索数据 (有实际上是一个串) 我们使用的JTextField方法 的getText().
要订购数据 我们使用的JTextField的方法 的setText(文本字符串).
方法requestFocus的() 帮助光标跳到 (集中) 这个JTextField中.
方法setEditable(布尔编辑) 获得进口数据的JTextField或未设置.

例 3: 对齐和创建事件的JTextField

在这个例子中,我们将创建 1 JTextFiel,当他们进入我们的文本是右对齐 (默认值是左旁), 当你按下回车键,就会显示进入到数据 1 的JLabel.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package nguyenvanquan7826.JTextField;
 
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
 
public class AlignAndAction extends JFrame implements KeyListener {
 
    private JTextField tf;
    private JLabel lb;
 
    public AlignAndAction() {
        createJFrame();
        addContent();
        displayJFrame();
    }
 
    // create JFrame
    private void createJFrame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(2, 1, 5, 5));
    }
 
    // display JFrame
    private void displayJFrame() {
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
 
    private void addContent() {
        tf = new JTextField(20);
        tf.setHorizontalAlignment(JTextField.RIGHT);// can trai
        tf.addKeyListener(this);
        add(tf);
 
        lb = new JLabel("Not data");
        add(lb);
    }
 
    private void updateData() {
        lb.setText(tf.getText());
    }
 
    public static void main(String[] args) {
        new AlignAndAction();
    }
 
    @Override
    public void keyPressed(KeyEvent e) {// nhan vao phim
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
            updateData();
        }
    }
 
    @Override
    public void keyReleased(KeyEvent e) { // nha phim ra
    }
 
    @Override
    public void keyTyped(KeyEvent e) { // nhap 1 phim
    }
}

抓事件的JTextField
JButton的, JTextField的事件也引起了鼠标甚至键盘按键再次. 为了让我们使用的方法的关键事件 addKeyListener() 并执行相同 捕捉事件的JButton的KeyListener 不是的ActionListener.
使用方法 setHorizo​​ntalAlignment 要对齐JTextField的.

其他的一些方法

getSelectedText(): 抢JTextField中选定的文本
setSelectionStart(INT selectionStart) 和setSelectionEnd(INT选定结束) 把首发位置,并完成所选文本. 没有方法,文本将从光标的当前位置来选择setSelectionStart (较小的选定结束) 到选定结束. 没有方法,该文本将被选择setSelectionEnd从SelectionStart位置到光标的当前位置 (更大的SelectionStart).
getCaretPosition() 和setCaretPosition(位置) 检索和设置的光标的当前位置.

请参阅: 一流的JTextField, 使用的JTextField