그래픽 인터페이스에서 텍스트 상자와 텍스트 영역은 정보 입력 및 출력에 사용되는 구성 요소입니다.
텍스트 상자
텍스트 상자(JTextField)는 텍스트 한 줄을 입력하고 출력하는 데 사용되는 인터페이스의 상자입니다. JTextField 클래스는 텍스트 상자를 만드는 데 사용됩니다. 텍스트 상자와 관련된 인터페이스는 ActionListener입니다.
텍스트박스 핸들러의 기본 내용은 다음과 같습니다.
텍스트박스 이름을 선언합니다.
텍스트 상자 개체를 만듭니다.
컨테이너에 텍스트 상자 개체를 추가합니다.
제어하려는 텍스트 상자 개체에 대한 모니터를 등록하고, 텍스트 상자의 입력 종료 이벤트(즉, Enter 키 입력) 이벤트를 수신합니다.
감지된 이벤트에 대한 판단 및 처리를 완료하기 위해 텍스트 상자 이벤트를 처리하는 방법입니다.
JTextField 클래스의 주요 구성 방법:
JTextField(), 텍스트 상자의 문자 길이는 1입니다.
JTextField(int columns), 텍스트 상자의 초기 값은 빈 문자열이고, 텍스트 상자의 문자 길이는 열로 설정됩니다.
JTextField(String text), 텍스트 상자의 초기값은 텍스트 문자열의 문자입니다.
JTextField(String text,int columns); 텍스트 상자의 초기 값은 텍스트이고 텍스트 상자의 문자 길이는 열입니다.
JTextField 클래스의 다른 메소드:
setFont(Font f), 글꼴 설정
setText(String text), 텍스트 상자의 텍스트 설정
getText()는 텍스트 상자의 텍스트를 가져옵니다.
setEditable(boolean)은 텍스트 상자의 편집 가능성을 지정합니다. 기본값은 true이며 편집 가능합니다.
setHorizontalAlignment(int alignment)는 텍스트 정렬을 설정합니다. 정렬 방법은 JTextField.LEFT, JTextField.CENTER, JTextField.RIGHT입니다.
requestFocus(), 포커스를 설정합니다.
addActionListener(ActionListener), 텍스트 상자에 대한 액션 모니터를 설정하고 텍스트 상자에서 발생하는 입력 종료 액션 이벤트를 수신하도록 ActionListener 개체를 지정합니다.
removeActionListener(ActionListener)는 텍스트 상자 모니터를 제거합니다.
getColumns()는 텍스트 상자의 열 수를 반환합니다.
getMinimumSize()는 텍스트 상자에 필요한 최소 크기를 반환합니다.
getMinimumSize(int)는 지정된 문자 수를 포함하는 텍스트 상자에 필요한 최소 크기를 반환합니다.
getPreferredSize()는 원하는 텍스트 상자 크기를 반환합니다.
getPreferredSize(int)는 문자 수가 지정된 경우 텍스트 상자의 원하는 크기를 반환합니다.
【예시】애플릿에는 두 개의 텍스트 상자가 있습니다. 하나의 텍스트 상자는 정수를 입력하는 데 사용되며 다른 텍스트 상자에는 정수의 제곱 값이 표시됩니다. 프로그램은 문자열을 기본 유형 메서드 Long.parseLong(text1.getText())에 사용하여 텍스트 상자 text1의 문자열을 읽고 정수로 변환합니다. 프로그램은 Sqr 클래스의 인스턴스를 모니터로 사용하지만, 모니터가 메인 클래스의 변수에 접근할 수 있도록 하기 위해 메인 클래스의 변수를 클래스 변수로 선언하고 접근 권한이 설정되어 있지 않습니다(소스 보기) 파일).
비밀번호 필드(JPasswordField)는 기본적으로 JTextField와 유사한 한 줄 입력 구성 요소입니다. 비밀번호 상자에는 추가 차폐 기능이 있습니다. 즉, 입력 시 지정된 문자(보통 * 문자)로 출력됩니다. 앞서 소개한 텍스트 상자 메서드 외에도 암호 상자에서 일반적으로 사용되는 몇 가지 메서드가 있습니다.
getEchoChar()는 암호의 에코 문자를 반환합니다.
setEchoChar(char)는 비밀번호 상자의 에코 문자를 설정합니다.
텍스트 영역
텍스트 영역(JTextArea)은 텍스트가 배치되는 형태의 영역입니다. 텍스트 영역과 텍스트 상자의 주요 차이점은 텍스트 영역에 여러 줄의 텍스트를 저장할 수 있다는 것입니다. javax.swing 패키지의 JTextArea 클래스는 텍스트 영역을 생성하는 데 사용됩니다. JTextArea 구성요소에 이벤트가 없습니다.
텍스트 영역 핸들러의 기본 내용은 다음과 같습니다.
텍스트 영역 이름을 선언합니다.
텍스트 영역 개체를 만듭니다.
컨테이너에 텍스트 영역 개체를 추가합니다.
JTextArea 클래스의 주요 구성 방법:
JTextArea()는 기본 열과 행 수를 사용하여 텍스트 영역 객체를 생성합니다.
JTextArea(String s)는 s를 초기값으로 사용하여 텍스트 영역 개체를 생성합니다.
JTextArea(Strings, int x, int y)는 s를 초기값으로, 행 수를 x, 열 수를 y로 사용하여 텍스트 영역 객체를 생성합니다.
JTextArea(int x, int y)는 행 개수가 x이고 열 개수가 y인 텍스트 영역 개체를 생성합니다.
JTextArea 클래스의 다른 일반적인 메서드:
setText(String s)는 표시된 텍스트를 설정하고 원본 텍스트를 지웁니다.
getText(), 텍스트 영역의 텍스트를 가져옵니다.
insert(String s, int x)는 지정된 위치에 지정된 텍스트를 삽입합니다.
replace(String s, int x, int y)는 x 위치에서 시작하여 y 위치에서 끝나는 텍스트를 지정된 텍스트로 바꿉니다.
append(String s), 텍스트 영역에 텍스트를 추가합니다.
getCarePosition()은 텍스트 영역에서 활성 커서의 위치를 가져옵니다.
setCarePosition(int n), 활성 커서의 위치를 설정합니다.
setLineWrap(boolean b), 자동 줄 바꿈을 설정합니다. 기본적으로 자동 줄 바꿈이 수행되지 않습니다.
다음 코드는 텍스트 영역을 생성하고 자동으로 줄바꿈하도록 설정합니다.
rree텍스트 영역에 내용이 많아 텍스트 영역에 모두 표시할 수 없는 경우 텍스트 영역에 스크롤 막대를 추가할 수 있습니다. 텍스트 영역의 스크롤 막대를 설정하려면 다음 코드를 사용할 수 있습니다:
JTextArea textA = new JTextArea(“我是一个文本区”,10,15); textA.setLineWrap(true);//设置自动换行
在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中文网!