Maison  >  Article  >  Java  >  Analyser les zones de texte et les zones de texte dans la programmation graphique Java

Analyser les zones de texte et les zones de texte dans la programmation graphique Java

高洛峰
高洛峰original
2017-01-17 16:28:311308parcourir

Dans l'interface graphique, les zones de texte et les zones de texte sont des composants utilisés pour la saisie et la sortie d'informations.
Zone de texte

La zone de texte (JTextField) est une boîte dans l'interface utilisée pour saisir et sortir une ligne de texte. La classe JTextField est utilisée pour créer des zones de texte. L'interface liée à la zone de texte est ActionListener.

Le contenu de base du gestionnaire de zone de texte est le suivant :

Déclarez un nom de zone de texte.

Créez un objet zone de texte.

Ajoutez l'objet zone de texte à un conteneur.

Enregistrez un moniteur pour l'objet de zone de texte qui doit être contrôlé et écoutez l'événement de fin d'entrée de la zone de texte (c'est-à-dire, entrez la touche Entrée).

Une méthode de traitement des événements de zone de texte pour compléter le jugement et le traitement des événements interceptés.

La méthode de construction principale de la classe JTextField :

JTextField(), la longueur des caractères de la zone de texte est de 1.

JTextField(int columns), la valeur initiale de la zone de texte est une chaîne vide et la longueur des caractères de la zone de texte est définie sur des colonnes.

JTextField(String text), le la valeur initiale de la zone de texte correspond aux caractères de la chaîne de texte.

JTextField(String text,int columns); La valeur initiale de la zone de texte est du texte et la longueur des caractères de la zone de texte est des colonnes.

Autres méthodes de la classe JTextField :

setFont(Font f), définir la police

setText(String text), définir le texte dans la zone de texte

getText(), récupère le texte dans la zone de texte.

setEditable(boolean), spécifie le caractère modifiable de la zone de texte, la valeur par défaut est true, modifiable.

setHorizontalAlignment(int align) définit l'alignement du texte. Les méthodes d'alignement sont : JTextField.LEFT, JTextField.CENTER, JTextField.RIGHT.

requestFocus(), définissez le focus.

addActionListener(ActionListener), définissez le moniteur d'action pour la zone de texte et spécifiez l'objet ActionListener pour recevoir l'événement d'action de fin d'entrée qui se produit sur la zone de texte.

removeActionListener(ActionListener) supprime le moniteur de zone de texte.

getColumns(), renvoie le nombre de colonnes de la zone de texte.

getMinimumSize(), renvoie la taille minimale requise pour la zone de texte.

getMinimumSize(int), renvoie la taille minimale requise pour la zone de texte avec le nombre de caractères spécifié.

getPreferredSize(), renvoie la taille souhaitée de la zone de texte.

getPreferredSize(int), renvoie la taille souhaitée de la zone de texte lorsque le nombre de caractères est spécifié.

【Exemple】L'applet comporte deux zones de texte. Une zone de texte est utilisée pour saisir un entier et l'autre zone de texte affiche la valeur carrée de l'entier. Le programme utilise la méthode de type de chaîne Long.parseLong(text1.getText()) pour lire la chaîne dans la zone de texte text1 et la convertir en entier. Le programme utilise une instance de la classe Sqr comme moniteur, mais afin de permettre au moniteur d'accéder aux variables de la classe principale, les variables de la classe principale sont déclarées comme variables de classe et aucune autorisation d'accès n'est définie (voir la source déposer).

Le champ Mot de passe (JPasswordField) est un composant de saisie sur une seule ligne, fondamentalement similaire à JTextField. La zone de mot de passe a une fonction de protection supplémentaire, c'est-à-dire que lors de la saisie, elle sera affichée avec un caractère spécifié (généralement le caractère *). En plus des méthodes de zone de texte présentées précédemment, il existe également des méthodes couramment utilisées dans les zones de mot de passe :

getEchoChar(), qui renvoie le caractère d'écho du mot de passe.

setEchoChar(char), définit le caractère d'écho de la zone de mot de passe.

Zone de texte

La zone de texte (JTextArea) est une zone du formulaire où le texte est placé. La principale différence entre une zone de texte et une zone de texte est que la zone de texte peut stocker plusieurs lignes de texte. La classe JTextArea du package javax.swing est utilisée pour créer des zones de texte. Le composant JTextArea n’a aucun événement.

Le contenu de base du gestionnaire de zone de texte inclut les aspects suivants :

Déclarez un nom de zone de texte.

Créez un objet zone de texte.

Ajoutez l'objet zone de texte à un conteneur.

La méthode de construction principale de la classe JTextArea :

JTextArea(), crée un objet zone de texte avec le nombre de colonnes et de lignes par défaut.

JTextArea(String s), en utilisant s comme valeur initiale, crée un objet zone de texte.

JTextArea(Strings, int x, int y), en utilisant s comme valeur initiale, le nombre de lignes comme x et le nombre de colonnes comme y, crée un objet zone de texte.

JTextArea(int x, int y) crée un objet zone de texte avec le nombre de lignes x et le nombre de colonnes y.

Autres méthodes courantes de la classe JTextArea :

setText(String s), définit le texte affiché et efface le texte original.

getText(), récupère le texte de la zone de texte.

insert(String s, int x), insère le texte spécifié à la position spécifiée.

replace(String s, int x, int y), remplace le texte commençant à la position x et se terminant à la position y par celui donné.

append(String s), ajoute du texte à la zone de texte.

getCarePosition(), récupère la position du curseur actif dans la zone de texte.

setCarePosition(int n), définit la position du curseur actif.

setLineWrap(boolean b), définit le retour à la ligne automatique. Par défaut, le retour à la ligne automatique n'est pas effectué.

Le code suivant crée une zone de texte et la configure pour qu'elle renvoie automatiquement les lignes.

JTextArea textA = new JTextArea(“我是一个文本区”,10,15);
textA.setLineWrap(true);//设置自动换行

Lorsqu'il y a beaucoup de contenu dans la zone de texte et qu'il ne peut pas être entièrement affiché dans la zone de texte, vous pouvez ajouter des barres de défilement à la zone de texte. Le code suivant peut être utilisé pour définir les barres de défilement pour la zone de texte :

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中文网!


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn