フレームにテキストを追加する

フレームにテキストを追加する

フレームに部品を配置して、テキストを表示するとこまでできました。
次は初期設定で設定した内容を上書きして変更するとか、テキストを追加するとかのアレンジをしてみます。
 mainプログラムに追加の設定を加えます。変更は例によって、LogFieldを経由して行います。ちと面倒ですが、そういう作りにしてしまったので。


public class MainTestFrm05 {
	public static void main(String[] args){
		
		 System.out.println("Hello, World!"); //この行いらないけど 
		 /* サブルーチンの練習 * インスタンスの生成から * */
		 LogField log = LogField.getInstance(); 
		 // ↑ここではnewしない 
		 
			log.setTitle("タイトルをやり直す。その2");
			log.setLabel("ラベルを書き直す。その2");
			log.setText("テキストエリアに追加するその2\r\n");
	}
}


 次は、LogFieldの修正です。
フレームへの中継のみです。


public class LogField {

	static String title="仮のタイトル";
	private static LogField insta = new LogField();	  // privateがみそ ここにだけnew
	private LogFrame frame;
	  
	private LogField() {	//フレームを作る
		frame = new LogFrame(title);
	}
		
	public static LogField getInstance() {	  // インスタンス取得メソッド ここはpublic
		return insta;
	}
 
	public void setTitle(String string) {		
		frame.setTitle(string);
	}
	
	public void setLabel(String string) {
		frame.setLabel(string);
	}
	public void setText(String string) {
		frame.setText(string);
	}

}


  最後にLogFrameの修正です。
タイトルとラベルはmainからの変更命令により書き換えます。
テキストエリアは、appendという良い命令がありました。これで追加できます。


import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;

public class LogFrame {
 
	JFrame mframe;	//共通で使えるように外に出しました
	JButton btn;
	JTextArea area;
	JLabel  label;
	
	public LogFrame(String title) {
		System.out.println("Hello world!2");// 不要な行です
	 
		mframe = new JFrame(title);  // フレーム(枠)を作る タイトルは受け渡し
		
		btn = new JButton("ボタン");
		area = new JTextArea("テキストエリアに文字その1");

		label = new JLabel("This is Sample.");

	    Container contentPane = mframe.getContentPane();
	    
	    contentPane.add(label, BorderLayout.NORTH);
	    contentPane.add(area,BorderLayout.CENTER);
	    contentPane.add(btn,BorderLayout.SOUTH);    

	    mframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	    // 閉じるボタンの処理
	    mframe.setBounds(100, 100, 400, 250);	    // x,yとフレームの大きさを設定

	    mframe.setLocationRelativeTo(null);	    // フレームを中央に表示
	    mframe.setVisible(true); 	    // フレームを表示
	}
 	
	public void setTitle(String string) {
	    mframe.setTitle(string);
	}
	public void setLabel(String string) {
	    label.setText(string);
	}
	public void setText(String string) {
		area.append("\r\n"+string);	//appendにするとテキストを追加できる
	}

	
}



hello

 実行すると右図のようになります。フレーム(枠)のタイトルやラベルが書き換わっています。またテキストエリアの文字も追加されて表示されています。