[PR] 不動産担保ローン
native2ascii を自前でがんばる
うっかり、以前Javaで作成したツールのソースを
消してしまいました。。。
幸い、jarは残っていたので、逆コンパイルしたのですが、
日本語が全てasciiになってしまい、処理の流れが良くわかりません。
native2ascii の逆、ascii2nativiを何とかプログラムで
作れないかと思い、実装してみました。
何かのご参考になれば・・・
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import java.io.*;
public class MainFrame extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField input;
private JTextField output;
private static String TITLE = "ASCII変換ツール";
/**
* LookAndFeelの設定
*/
static {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Throwable tw) { }
}
/**
* @param args 起動時オプション
*/
public static void main(String[] args) {
// 自分自身のインスタンス化
JFrame frame = new MainFrame();
// フレームのセットアップ
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 終了時処理
//画面のサイズを決定します。
frame.setSize(new Dimension(500, 110));
// 画面位置の設定を行います。
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setBounds( (screenSize.width - frame.getWidth()) / 2,
(screenSize.height - frame.getHeight()) /
2, frame.getWidth(), frame.getHeight());
// 可視化(リアライズ)
frame.setVisible(true);
}
// コンストラクタ
public MainFrame() {
// スーパークラスのコンストラクタ呼び出し
super(TITLE);
//実行ボタンの作成
JButton update = new JButton("変換");
update.setActionCommand("conv");
update.addActionListener(this);
// パネルに部品を追加
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JPanel panel2 = new JPanel();
panel2.add(update,BorderLayout.NORTH);
panel.add(panel2, BorderLayout.NORTH);
input = new JTextField();
output = new JTextField();
// コンテント・ペインの取得
Container cnt = getContentPane();
cnt.setLayout(new BorderLayout());
// コンテント・ペインに部品を追加
cnt.add(panel, BorderLayout.NORTH);
cnt.add(input,BorderLayout.CENTER);
cnt.add(output,BorderLayout.SOUTH);
File file = new File("temp");
if(file.exists()){
file.delete();
}
file.mkdir();
}
/**
* ボタン押下時のイベント処理
*/
public void actionPerformed(ActionEvent ae) {
if ("conv".equals(ae.getActionCommand())) {
try {
String raw = input.getText();
StringBuffer result = new StringBuffer();
for(;;){
if(raw.length() == 0){
break;
}
int index = raw.indexOf("\\u");
if (index == -1){
result.append(raw);
break;
} else {
if (0 < index){
result.append(raw.substring(0,index));
}
if (index + 6 <= raw.length()){
char tmp = (char)Integer.parseInt(raw.substring(index+2,index+6),16);
result.append(tmp);
raw = raw.substring(index+6);
} else {
break;
}
}
}
output.setText(result.toString());
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
もどる