文字コード(unicode)を16進で表示するツール2

 

ある処理をおこなうプログラムを書ことを実装すると言います。
この「実装」は1通りとは限らず、色々な書き方(実装方法)があるのが普通です。

毎度、管理人イガジーです。

狙ったとおり(仕様通り)に動けば、どれも正解です。が、
一般的には短い方が良いと言われます。
短い方が全体が一望できて、理解しやすいからです。
(※ ただし、トリッキーな技を駆使して短くした場合は別です)

さて、昨日の続きで入力した文字列をUnicodeの16進数で表示する
プログラムの例を掲載します。

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class UNICodes implements ActionListener {
	Frame f=new Frame("UNICodes");
	TextField tf=new TextField(25);
	TextArea ta=new TextArea(null, 40,40,TextArea.SCROLLBARS_VERTICAL_ONLY);
	Button cb=new Button("Check");
	char []c;

	UNICodes(){
		f.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent arg0) {
				System.exit(0);
			}
		});
		Label l=new Label("文字列:");
		Panel p1=new Panel();
		p1.setLayout(new FlowLayout(FlowLayout.LEFT));
		p1.add(l);
		p1.add(tf);
		f.add(p1,BorderLayout.NORTH);
//		ta.setFont(new Font(Font.MONOSPACED,Font.PLAIN,14));
		tf.addActionListener(this);
		f.add(ta,BorderLayout.CENTER);
		Panel p2=new Panel();
		cb.addActionListener(this);
		p2.add(cb);
		f.add(p2,BorderLayout.SOUTH);
		f.setSize(300,300);
		f.setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent arg0) {
		String ts=tf.getText();
		c=ts.toCharArray();
		ta.setText(null);
		for (int i=0;i<c.length;++i) {
//			ta.append(Integer.toString(i)+": ");
			ta.append(Character.toString(c[i])+" (");
			ta.append(Integer.toHexString(c[i])+")¥n");
		}
	}
/*
	class SetTaText implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent arg0) {
			String ts=tf.getText();
			c=ts.toCharArray();
			ta.setText(null);
			for (int i=0;i<c.length;++i) {
//				ta.append(Integer.toString(i)+": ");
				ta.append(Character.toString(c[i])+" (");
				ta.append(Integer.toHexString(c[i])+")¥n");
			}
		}
	}
*/
	public static void main(String[] args) {
		new UNICodes();
	}
}

Buttonを押した場合も、TextFieldで[Enter]キーを入力した場合も
同じActionListenerで済むので、自分自身のクラスに implements して
addActionListener(this);としています。

コメントにしていますが、専用のクラス(class SetTaText)を用意して
ActionListenerを実装する方法もあります。その場合は、
addActionListener(new SetTaText());になります。
好みの問題ですが、今回のような場合は、前者の方が(少し短くなり)
良い気がしています。

ご意見、ご質問、ご要望などございましたら、お気軽にメールフォームからご連絡ください。
プログラミングのメール講座のモニタ生徒も引続き募集中です。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。