Javaグラフィックスプログラミングのテキストボックスとテキスト領域の解析
7705 ワード
グラフィックインタフェースでは、テキストボックスとテキスト領域は情報入出力のためのコンポーネントです.テキストボックス
テキストボックス(JTextField)は、1行のテキストを入力および出力するためのインタフェースのボックスです.JTextFieldクラスは、テキストボックスを作成するために使用されます.テキストボックスに関連するインタフェースはActionListenerです.
テキスト・ボックス・ハンドラの基本的な内容は、次のとおりです.は、テキストボックス名を宣言します. は、テキストボックスオブジェクトを作成します. テキストボックスオブジェクトをコンテナに追加します. は、制御が必要なテキストボックスオブジェクトにモニタを登録し、テキストボックスの入力終了(すなわち、リターンキーの入力)イベントを傍受する. テキストボックスイベントを処理する方法で、キャプチャイベントの判断と処理を完了する.
JTextFieldクラスの主な構成方法: JTextField()は、テキストボックスの文字長が1です. JTextField(int columns)、テキストボックスの初期値が空の文字列、テキストボックスの文字長をcolumnsとする. JTextField(String text)、テキストボックスの初期値がtextの文字列. JTextField(String text,int columns);テキストボックスの初期値はtextで、テキストボックスの文字長は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)は、文字数を指定した場合にテキストボックスが持つサイズを返します.
【例】小さなアプリケーションには2つのテキストボックスがあります.あるテキストは整数を入力するために使用され、別のテキストボックスはこの整数の平方値を表示します.プログラムが文字列で基本タイプを変換する方法Long.parseLong(text 1.getText()は、テキストボックスtext 1の文字列を読み込み、整数に変換します.プログラムはSqrクラスのインスタンスをモニタとして使用しますが、モニタがプライマリクラスの変数にアクセスできるように、プライマリクラスの変数はクラス変数として宣言され、アクセス権は設定されません(ソースファイルの表示).
パスワードボックス(JPasswordField)は、JTextFieldとほぼ同様の1行の入力コンポーネントです.パスワードボックスには、入力時に1つの指定された文字(一般的には*文字)で出力されるシールド機能が1つ以上あります.前に説明したテキスト・ボックスの方法に加えて、パスワード・ボックスでよく使用される方法もあります. 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)は、自動改行を設定し、デフォルトでは、自動的に改行しません.
次のコードは、テキスト領域を作成し、自動的に改行できるように設定します.
テキスト領域の内容が多く、テキスト領域にすべて表示できない場合は、テキスト領域にスクロールバーを付けることができます.テキスト領域にスクロールバーを設定するには、次のコードを使用します.
GUIでは,通常のテキストボックスとテキスト領域でデータの入出力を実現する.テキスト領域入力を使用する場合は、通常、データ入力完了ボタンを別途設定します.データ入力が終了したら、このボタンをクリックします.イベントハンドラはgetText()メソッドを用いて文字列情報をテキスト領域から読み出す.テキストボックスを入力として使用する場合、最後に入力したリターン記号は、通常、ボタンを別途設定することなく、入力完了イベントを励起することができる.イベントハンドラは,単語解析器を用いて個々の数を解析し,文字列変換数値法を再利用して入力した数値を得ることができる.出力の場合、プログラムはまず数値を文字列に変換し、setText()メソッドでデータをテキストボックスまたはテキスト領域に出力します.
【例】小さなアプリケーションは、1つのテキスト領域、1つのテキストボックス、および2つのボタンを設定します.ユーザーはテキスト領域に整数シーケンスを入力し、「合計」ボタンをクリックし、プログラムはテキスト領域の整数シーケンスを合計し、テキストボックスに和を出力します.2番目のボタンをクリックして、テキスト領域とテキストボックスの内容をクリアします.
【例】小アプリケーションは、開始整数から終了整数までの係数倍数であるすべての数を計算する.ウィジェットコンテナはGridLayoutレイアウトでインタフェースを3列に分け,1行目はラベル,2行目と3行目は2つのパネルである.2つのPanel容器類Panel 1,Panel 2を設計し,それぞれGridLayoutレイアウトで区分した.Panel 1は1行6列、Panel 2は1行4列です.次に、ラベルとコンテナクラスPanel 1、Panel 2で生成されたコンポーネントをウィンドウの対応する位置に追加します.
テキストボックス(JTextField)は、1行のテキストを入力および出力するためのインタフェースのボックスです.JTextFieldクラスは、テキストボックスを作成するために使用されます.テキストボックスに関連するインタフェースはActionListenerです.
テキスト・ボックス・ハンドラの基本的な内容は、次のとおりです.
JTextFieldクラスの主な構成方法:
JTextFieldクラスの他の方法:
【例】小さなアプリケーションには2つのテキストボックスがあります.あるテキストは整数を入力するために使用され、別のテキストボックスはこの整数の平方値を表示します.プログラムが文字列で基本タイプを変換する方法Long.parseLong(text 1.getText()は、テキストボックスtext 1の文字列を読み込み、整数に変換します.プログラムはSqrクラスのインスタンスをモニタとして使用しますが、モニタがプライマリクラスの変数にアクセスできるように、プライマリクラスの変数はクラス変数として宣言され、アクセス権は設定されません(ソースファイルの表示).
パスワードボックス(JPasswordField)は、JTextFieldとほぼ同様の1行の入力コンポーネントです.パスワードボックスには、入力時に1つの指定された文字(一般的には*文字)で出力されるシールド機能が1つ以上あります.前に説明したテキスト・ボックスの方法に加えて、パスワード・ボックスでよく使用される方法もあります.
テキスト領域
テキスト領域(JTextArea)は、フォーム内のテキストを配置する領域です.テキスト領域とテキストボックスの主な違いは、テキスト領域が複数行のテキストを格納できることです.javax.swingパッケージのJTextAreaクラスは、テキスト領域を作成するために使用されます.JTextAreaコンポーネントにイベントはありません.
テキスト領域ハンドラの基本的な内容は次のとおりです.
JTextAreaクラスの主な構成方法:
JTextAreaクラスのその他の一般的な方法:
次のコードは、テキスト領域を作成し、自動的に改行できるように設定します.
JTextArea textA = new JTextArea(“ ”,10,15);
textA.setLineWrap(true);//
テキスト領域の内容が多く、テキスト領域にすべて表示できない場合は、テキスト領域にスクロールバーを付けることができます.テキスト領域にスクロールバーを設定するには、次のコードを使用します.
JTextArea ta = new JTextArea();
JScrollPane jsp = new JScrollPane(ta);//
GUIでは,通常のテキストボックスとテキスト領域でデータの入出力を実現する.テキスト領域入力を使用する場合は、通常、データ入力完了ボタンを別途設定します.データ入力が終了したら、このボタンをクリックします.イベントハンドラはgetText()メソッドを用いて文字列情報をテキスト領域から読み出す.テキストボックスを入力として使用する場合、最後に入力したリターン記号は、通常、ボタンを別途設定することなく、入力完了イベントを励起することができる.イベントハンドラは,単語解析器を用いて個々の数を解析し,文字列変換数値法を再利用して入力した数値を得ることができる.出力の場合、プログラムはまず数値を文字列に変換し、setText()メソッドでデータをテキストボックスまたはテキスト領域に出力します.
【例】小さなアプリケーションは、1つのテキスト領域、1つのテキストボックス、および2つのボタンを設定します.ユーザーはテキスト領域に整数シーケンスを入力し、「合計」ボタンをクリックし、プログラムはテキスト領域の整数シーケンスを合計し、テキストボックスに和を出力します.2番目のボタンをクリックして、テキスト領域とテキストボックスの内容をクリアします.
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列に分け,1行目はラベル,2行目と3行目は2つのパネルである.2つのPanel容器類Panel 1,Panel 2を設計し,それぞれGridLayoutレイアウトで区分した.Panel 1は1行6列、Panel 2は1行4列です.次に、ラベルとコンテナクラスPanel 1、Panel 2で生成されたコンポーネントをウィンドウの対応する位置に追加します.
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)+"");
}
}
}
}