文字コード(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());
になります。
好みの問題ですが、今回のような場合は、前者の方が(少し短くなり)
良い気がしています。
ご意見、ご質問、ご要望などございましたら、お気軽にメールフォームからご連絡ください。
プログラミングのメール講座のモニタ生徒も引続き募集中です。
この記事へのコメントはこちら