戻る。

DecimalFormatの実験。


Javaの本とか見ると、数値の入出力は

System.out.println();

とかを使っている例が多いですが、コンソールを使うのは、なんかイマイチなのでアプレット上に書きたい。

1)テキストエリアに入力された数を変数に読み取る。

String s;
double dn;
// textfieldの文字列を取り出して
s = textField1.getText();
//文字列をDoubleオブジェクトにしてから(valueof) Double値を取り出す(doubleValue(面倒〜)
dn = Double.valueOf(s).doubleValue();

2)変数の値をアプレット上に書く。

//paint(Grahpics g) 内で書くなら、下の2行は不要(というか、宣言がダブるので書いてはいけない)
Graphics g;
g = this.getGraphics() ;

s = "value = " + dn ; //文字列+実数 = 文字列

g.drawString(s,10,20); //10,20は座標

3)変数の値を、書式に従って書く。

DecimalFormat fmt = new DecimalFormat("##.##");
s = "value = " + fmt.format(dn) + " (" + sf + " )";
g.drawString(s,10,40);

4)書式のパターンを変えたい。

fmt.applyPattern("##.#####");

5)アプレット上ではなくて、ラベルに書きたい。

label1.setText(s);


Applet2.java
作成: JBuilder
package tips;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

import java.text.*;

/**
 * タイトル:
 * 説明:
 * 著作権:   Copyright (c) 2001
 * 会社名:
 * @author
 * @version 1.0
 */

public class Applet2 extends Applet {
  boolean isStandalone = false;
  Panel panel1 = new Panel();
  Button button1 = new Button();
  BorderLayout borderLayout1 = new BorderLayout();
  Label label2 = new Label();
  TextField textField1 = new TextField();
  FlowLayout flowLayout1 = new FlowLayout();
  /**引数値の取得*/
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  /**アプレットの構築*/
  public Applet2() {
  }
  /**アプレットの初期化*/
  public void init() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  /**コンポーネントの初期化*/
  private void jbInit() throws Exception {
    this.setLayout(borderLayout1);
    button1.setLabel("push");
    button1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        button1_actionPerformed(e);
      }
    });
    panel1.setLayout(flowLayout1);
    label2.setText("Value=");
    textField1.setText("12.345");
    this.add(panel1, BorderLayout.SOUTH);
    panel1.add(label2, null);
    panel1.add(textField1, null);
    panel1.add(button1, null);
  }
  /**アプレットの開始*/
  public void start() {
  }
  /**アプレットの停止*/
  public void stop() {
  }
  /**アプレットの破棄*/
  public void destroy() {
  }
  /**アプレットの情報取得*/
  public String getAppletInfo() {
    return "Applet Information";
  }
  /**引数情報の取得*/
  public String[][] getParameterInfo() {
    return null;
  }

  void button1_actionPerformed(ActionEvent e) {

  String s,sf;
  Graphics g;
  g = this.getGraphics() ;

  //アプレットの画面をクリア
  g.clearRect(0,0,this.getSize().width,this.getSize().height);

  double dn;

  dn = 12.34567;
  // textfieldの文字列を取り出して
  s = textField1.getText();

  //文字列をDoubleオブジェクトにしてから(valueof)  Double値を取り出す(doubleValue(面倒〜)
  dn = Double.valueOf(s).doubleValue();

  s = "value = " + dn + "(そのまま)" ;
  g.drawString(s,10,20);
  sf = "##.##";
  DecimalFormat fmt = new DecimalFormat("##.##");
  fmt.applyPattern(sf);
  s = "value = " + fmt.format(dn) + " (" + sf + " )";
  g.drawString(s,10,40);

  sf = "##.#######";
  fmt.applyPattern(sf);
  s = "value = " + fmt.format(dn) +  " (" + sf + " )";
  g.drawString(s,10,60);

  sf = "##.0000000";
  fmt.applyPattern(sf);
  s = "value = " + fmt.format(dn) + " (" + sf + " )";
  g.drawString(s,10,80);

  }
}

Applet2.java
作成: JBuilder