トップページ > dsPIC入門 > Javaでハイパーターミナル(2)

テキストエリアについて

文字を表示します

Swingクラス・ライブラリのコンポーネントの1つとして、“JTextArea”というのがあります。 これは文字列を複数行表示するためのコンポーネントで、文字を表示したり、表示されている文字を取得 したりすることができます。これの使い方を見ていきます。最終的に実装する形とは違いますが、 とりあえずテストということで、MainFrameクラスのコンストラクタで実装してみることにします。

テキストエリアを追加

//******************************************************************************
//Javaでハイパーターミナル(1)  テキストエリア表示まで
//******************************************************************************

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import gnu.io.*;
import java.io.*;


//******************************************************************************
//メインクラス。メイン関数内では、ただMainFrameを作成するだけです。
public class serial_canvas1
{
 //=============================================================================
 //メイン関数
 public static void main(String args[])
 {
  MainFrame frame = new MainFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(500,500);
  frame.setVisible(true);
 }
}


//******************************************************************************
//実際のコンポーネントとかは、このクラスで管理します。JFrameを継承・・・
class MainFrame extends JFrame
{
 //=============================================================================
 //コンストラクタ
 MainFrame()
 {
  //JFrameクラスのコンストラクタを呼びます
  super("serial_canvas1");

  //コンテント・ペインを作成。コンテント・ペインはJPanel型です。
  JPanel cp = new JPanel();
  
  //レイアウト方式を設定。今回は座標で設定するため、nullとします。
  cp.setLayout(null);

  //コンテント・ペインをフレームに追加。
  add(cp);
  
  //テキストエリアを作成
  JTextArea tx = new JTextArea();

  //テキストエリアの大きさ、場所を設定。
  tx.setBounds(50,50,400,300);

  //テキストエリアをコンテント・ペインに追加。
  cp.add(tx);
 }
}

コンテント・ペインとか、レイアウト機能とか…

コンテント・ペイン…というのがありました。これは名前の通り、フレームの上に貼り付けて使用する“枠”です。 フレームの上に直接ボタンやテキストエリア等のコンポーネントを貼り付けていっても良いのですが、 あらかじめコンテント・ペインの上に各コンポーネントを貼り付けておいて、それを最後にフレームに貼り付ける …という考え方をすると、コンテント・ペインとフレームを独立した要素として考えることができるので クラス管理などの面でラクだったりします。 (実際にソースコードを書く際には、記述の順番はこの通りでなくても大丈夫です。) このコンテントペインはただの“枠”なので、型(というのか?)は JPanelとなります。上のソースコードだと、そのありがたみがイマイチなのですが、後々のことを考えてコンテント ペインを使用することにします。

Javaにはレイアウト機能…というのもありました。フレームやパネルにコンポーネントを貼り付ける際に その都度座標を設定していったのでは面倒なので、自動でレイアウトをしてくれるというやつです。 レイアウトの種類にはいろいろあり、柔軟なレイアウトが可能になっています。…が、今回は使いません。 とりあえず基礎の基礎ということで、今回はレイアウト機能をOFFにして、コンポーネントごとに座標を設定 していくという方法を使ってみます。いざという時の奥の手(?)として使えるようにしておくということで。

ここまでの内容は、ソースコード上では3行分となります。

  //コンテント・ペインを作成。コンテント・ペインはJPanel型です。
  JPanel cp = new JPanel();
  
  //レイアウト方式を設定。今回は座標で設定するため、nullとします。
  cp.setLayout(null);

  //コンテント・ペインをフレームに追加。
  add(cp);

JPanelのインスタンスとして生成したコンテントペインは、ContentPaneを意識して“cp”という名前にしてみました…。

 

テキストエリア

テキストエリアは、“JTextArea”クラスとして扱います。コンストラクタの引数には何も入れていません。

  //テキストエリアを作成
  JTextArea tx = new JTextArea();

  //テキストエリアの大きさ、場所を設定。
  tx.setBounds(50,50,400,300);

  //テキストエリアをコンテント・ペインに追加。
  cp.add(tx);

setBounds(x座標,y座標,x方向幅,y方向幅)

…でテキストエリアの位置と大きさを設定しています。最後にコンテントペインにテキストエリアを貼り付けて 終わり。

なんかオカシイ。

先ほど作ったプログラムをコンパイルして実行してみます。テキストエリアにカーソルが表示されているので、 適当に文字を打ち込んでみると…まず、右端までいった後に折り返すことなく右へ右へと行ってしまって 見えなくなってしまいます。これでは困ります。さらに、Enterキーで改行していくと、カーソルは下へ下へと 行ってしまって見えなくなってしまいます。これでは困ります……。

…ということで、修正版を作ります。




前へ   次へ