[JavaSwing] 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的(): 创造新 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方法 的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 } } |
像 JButton的, JTextField的事件也引起了鼠标甚至键盘按键再次. 为了让我们使用的方法的关键事件 addKeyListener() 并执行相同 捕捉事件的JButton 但 的KeyListener 不是的ActionListener.
使用方法 setHorizontalAlignment 要对齐JTextField的.
其他的一些方法
getSelectedText(): 抢JTextField中选定的文本
setSelectionStart(INT selectionStart) 和setSelectionEnd(INT选定结束) 把首发位置,并完成所选文本. 没有方法,文本将从光标的当前位置来选择setSelectionStart (较小的选定结束) 到选定结束. 没有方法,该文本将被选择setSelectionEnd从SelectionStart位置到光标的当前位置 (更大的SelectionStart).
getCaretPosition() 和setCaretPosition(位置) 检索和设置的光标的当前位置.
请参阅: 一流的JTextField, 使用的JTextField
我问这个段落 ("Ok") 那是什么意思 ? 我觉得有点奇怪.
为什么我退出JFrame时需要JFrame.EXIT_ON_CLOSE. 去一切都很好 ?
由于代码在JFrame类中而被放弃, 如果代码在另一个类中,则需要JFrame进行调用.
添加(新的JButton(“行”));
添加一个确定按钮
钟杰克 11 为什么我不能使用setActionCommand方法
你怎么会错?