In der grafischen Oberfläche sind Textfelder und Textbereiche Komponenten, die zur Informationseingabe und -ausgabe verwendet werden.
Textfeld
Textfeld (JTextField) ist ein Feld in der Schnittstelle, das zur Eingabe und Ausgabe einer Textzeile verwendet wird. Die JTextField-Klasse wird zum Erstellen von Textfeldern verwendet. Die mit dem Textfeld verbundene Schnittstelle ist ActionListener.
Der grundlegende Inhalt des Textfeld-Handlers ist wie folgt:
Deklarieren Sie einen Textfeldnamen.
Erstellen Sie ein Textfeldobjekt.
Fügen Sie das Textfeldobjekt einem Container hinzu.
Registrieren Sie einen Monitor für das Textfeldobjekt, das gesteuert werden muss, und warten Sie auf das Eingabe-Ende-Ereignis des Textfelds (d. h. Eingabe der Eingabetaste).
Eine Methode zur Verarbeitung von Textfeldereignissen, um die Beurteilung und Verarbeitung abgefangener Ereignisse abzuschließen.
Die Hauptkonstruktionsmethode der JTextField-Klasse:
JTextField(), die Zeichenlänge des Textfelds beträgt 1.
JTextField(int columns), der Anfangswert des Textfelds ist eine leere Zeichenfolge und die Zeichenlänge des Textfelds ist auf Spalten festgelegt.
JTextField(String text), der Der Anfangswert des Textfelds sind die Zeichen der Textzeichenfolge.
JTextField(String text,int columns); Der Anfangswert des Textfelds ist Text und die Zeichenlänge des Textfelds ist Spalten.
Andere Methoden der JTextField-Klasse:
setFont(Font f), legt die Schriftart fest
setText(String text), legt den Text im Textfeld fest
getText(), ruft den Text im Textfeld ab.
setEditable(boolean), gibt die Bearbeitbarkeit des Textfelds an, der Standardwert ist true, bearbeitbar.
setHorizontalAlignment(intalignment) legt die Textausrichtung fest. Ausrichtungsmethoden sind: JTextField.LEFT, JTextField.CENTER, JTextField.RIGHT.
requestFocus(), Fokus setzen.
addActionListener(ActionListener), legen Sie den Aktionsmonitor für das Textfeld fest und geben Sie das ActionListener-Objekt an, um das Eingabe-Ende-Aktionsereignis zu empfangen, das im Textfeld auftritt.
removeActionListener(ActionListener) entfernt den Textfeldmonitor.
getColumns(), gibt die Anzahl der Spalten des Textfelds zurück.
getMinimumSize() gibt die für das Textfeld erforderliche Mindestgröße zurück.
getMinimumSize(int), gibt die Mindestgröße zurück, die für das Textfeld mit der angegebenen Anzahl von Zeichen erforderlich ist.
getPreferredSize(), gibt die gewünschte Größe des Textfelds zurück.
getPreferredSize(int), gibt die gewünschte Größe des Textfelds zurück, wenn die Anzahl der Zeichen angegeben wird.
[Beispiel] Das Applet verfügt über zwei Textfelder. Ein Textfeld dient zur Eingabe einer Ganzzahl und das andere Textfeld zeigt den Quadratwert der Ganzzahl an. Das Programm verwendet die String-to-Basic-Type-Methode Long.parseLong(text1.getText()), um den String im Textfeld text1 zu lesen und ihn in eine Ganzzahl umzuwandeln. Das Programm verwendet eine Instanz der Sqr-Klasse als Monitor. Um dem Monitor jedoch den Zugriff auf die Variablen der Hauptklasse zu ermöglichen, werden die Variablen in der Hauptklasse als Klassenvariablen deklariert und es werden keine Zugriffsberechtigungen festgelegt (siehe Quelle). Datei).
Das Passwortfeld (JPasswordField) ist eine einzeilige Eingabekomponente, die im Grunde JTextField ähnelt. Das Passwortfeld verfügt über eine zusätzliche Schutzfunktion, d. h. bei der Eingabe wird es mit einem angegebenen Zeichen (normalerweise dem *-Zeichen) ausgegeben. Zusätzlich zu den zuvor vorgestellten Textfeldmethoden gibt es einige häufig verwendete Methoden in Passwortfeldern:
getEchoChar(), die das Echozeichen des Passworts zurückgibt.
setEchoChar(char), legt das Echozeichen des Passwortfelds fest.
Textbereich
Der Textbereich (JTextArea) ist ein Bereich im Formular, in dem Text platziert wird. Der Hauptunterschied zwischen einem Textbereich und einem Textfeld besteht darin, dass der Textbereich mehrere Textzeilen speichern kann. Die JTextArea-Klasse im Paket javax.swing wird zum Erstellen von Textbereichen verwendet. Die JTextArea-Komponente hat keine Ereignisse.
Der grundlegende Inhalt des Textbereichshandlers ist wie folgt:
Deklarieren Sie einen Textbereichsnamen.
Erstellen Sie ein Textbereichsobjekt.
Fügen Sie das Textbereichsobjekt einem Container hinzu.
Die Hauptkonstruktionsmethode der JTextArea-Klasse:
JTextArea(), erstellt ein Textbereichsobjekt mit der Standardanzahl von Spalten und Zeilen.
JTextArea(String s) erstellt unter Verwendung von s als Anfangswert ein Textbereichsobjekt.
JTextArea(Strings, int x, int y) erstellt unter Verwendung von s als Anfangswert, der Anzahl der Zeilen als x und der Anzahl der Spalten als y ein Textbereichsobjekt.
JTextArea(int x, int y) erstellt ein Textbereichsobjekt mit der Anzahl der Zeilen als x und der Anzahl der Spalten als y.
Andere gängige Methoden der JTextArea-Klasse:
setText(String s), legt den angezeigten Text fest und löscht den Originaltext.
getText(), holen Sie sich den Text des Textbereichs.
insert(String s, int x), fügt den angegebenen Text an der angegebenen Position ein.
replace(String s, int x, int y) ersetzt den Text, der an der x-Position beginnt und an der y-Position endet, durch den angegebenen.
append(String s), Text an den Textbereich anhängen.
getCarePosition(), ruft die Position des aktiven Cursors im Textbereich ab.
setCarePosition(int n), legt die Position des aktiven Cursors fest.
setLineWrap(boolean b), legt den automatischen Zeilenumbruch fest. Standardmäßig wird kein automatischer Zeilenumbruch durchgeführt.
Der folgende Code erstellt einen Textbereich und stellt ihn so ein, dass Zeilen automatisch umbrochen werden.
JTextArea textA = new JTextArea(“我是一个文本区”,10,15); textA.setLineWrap(true);//设置自动换行
Wenn sich im Textbereich viele Inhalte befinden und nicht alle im Textbereich angezeigt werden können, können Sie dem Textbereich Bildlaufleisten hinzufügen. Mit dem folgenden Code können Bildlaufleisten für den Textbereich festgelegt werden:
JTextArea ta = new JTextArea(); JScrollPane jsp = new JScrollPane(ta);//给文本区添加滚动条
在GUI中,常用文本框和文本区实现数据的输入和输出。如果采用文本区输入,通常另设一个数据输入完成按钮。当数据输入结束时,点击这个按钮。事件处理程序利用getText()方法从文本区中读取字符串信息。对于采用文本框作为输入的情况,最后输入的回车符可以激发输入完成事件,通常不用另设按钮。事件处理程序可以利用单词分析器分析出一个个数,再利用字符串转换数值方法,获得输入的数值。对于输出,程序先将数值转换成字符串,然后通过setText()方法将数据输出到文本框或文本区。
【例】小应用程序设置一个文本区、一个文本框和两个按钮。用户在文本区中输入整数序列,单击求和按钮,程序对文本区中的整数序列进行求和,并在文本框中输出和。单击第二个按钮,清除文本区和文本框中的内容。
import java.util.*;import java.applet.*;import java.awt.*; import javax.swing.*;import java.awt.event.*; public class J509 extends Applet implements ActionListener{ JTextArea textA;JTextField textF;JButton b1,b2; public void init(){ setSize(250,150); textA=new JTextArea("",5,10); textA.setBackground(Color.cyan); textF=new JTextField("",10); textF.setBackground(Color.pink); b1=new JButton("求 和"); b2=new JButton("重新开始"); textF.setEditable(false); b1.addActionListener(this); b2.addActionListener(this); add(textA); add(textF); add(b1);add(b2); } public void actionPerformed(ActionEvent e){ if(e.getSource()==b1){ String s=textA.getText(); StringTokenizer tokens=new StringTokenizer(s); //使用默认的分隔符集合:空格、换行、Tab符合回车作分隔符 int n=tokens.countTokens(),sum=0,i; for(i=0;i<=n-1;i++){ String temp=tokens.nextToken();//从文本区取下一个数据 sum+=Integer.parseInt(temp); } textF.setText(""+sum); } else if(e.getSource()==b2){ textA.setText(null); textF.setText(null); } } }
【例】小应用程序计算从起始整数到终止整数中是因子倍数的所有数。小程序容器用GridLayout布局将界面划分为3行列,第一行是标签,第二行和第三行是两个Panel。设计两个Panel容器类Panel1,Panel2,并分别用GridLayout布局划分。Panel1为1行6列,Panel2为1行4列。然后将标签和容器类Panel1,Panel2产生的组件加入到窗口的相应位置中。
import java.applet.*;import javax.swing.*; import java.awt.*;import java.awt.event.*; class Panel1 extends JPanel{ JTextField text1,text2,text3; Panel1(){//构造方法。当创建Panel对象时,Panel被初始化为有三个标签 //三个文本框,布局为GridLayout(1,6) text1=new JTextField(10);text2=new JTextField(10); text3=new JTextField(10);setLayout(new GridLayout(1,6)); add(new JLabel("起始数",JLabel.RIGHT));add(text1); add(new JLabel("终止数",JLabel.RIGHT));add(text2); add(new JLabel("因子",JLabel.RIGHT));add(text3); } } class Panel2 extends JPanel{//扩展Panel类 JTextArea text;JButton Button; Panel2(){//构造方法。当创建Panel对象时,Panel被初始化为有一个标签 //一个文本框,布局为GridLayout(1,4) text=new JTextArea(4,10);text.setLineWrap(true); JScrollPane jsp=new JScrollPane(text); Button=new JButton("开始计算"); setLayout(new GridLayout(1,4)); add(new JLabel("计算结果:",JLabel.RIGHT)); add(jsp); add(new Label());add(Button); } } public class J510 extends Applet implements ActionListener{ Panel1 panel1;Panel2 panel2; public void init(){ setLayout(new GridLayout(3,1)); setSize(400,200);panel1=new Panel1();panel2=new Panel2(); add(new JLabel("计算从起始数到终止数是因子倍数的数",JLabel.CENTER)); add(panel1);add(panel2); (panel2.Button).addActionListener(this); } public void actionPerformed(ActionEvent e){ if(e.getSource()==(panel2.Button)){ long n1,n2,f,count=0; n1=Long.parseLong(panel1.text1.getText()); n2=Long.parseLong(panel1.text2.getText()); f=Long.parseLong(panel1.text3.getText()); for(long i=n1;i<=n2;i++){ if(i%f==0) panel2.text.append(String.valueOf(i)+""); } } } }
更多解析Java图形化编程中的文本框和文本区相关文章请关注PHP中文网!