isami100のSwingin' Seasar日記

2004-07-05

フォーマッタの作成(数値タイプ)

次は、数値用のフォーマッタを作成。日付用と同じく、編集用と表示用のフォーマットを分けて定義します。

Formatter.dicon(追加部分のみ)
    <!-- Number -->
    <component name="fmtDecimal5p2" class="java.text.DecimalFormat">
        <arg>"#####.##"</arg>
        <property name="maximumIntegerDigits">5</property>
        <property name="maximumFractionDigits">2</property>
        <aspect pointcut="parseObject">nullFormatInterceptor</aspect>
    </component>
    <component name="fmtDecimal5p2WithGrouping" class="java.text.DecimalFormat">
        <arg>"##,##0.00"</arg>
        <property name="maximumIntegerDigits">5</property>
        <property name="maximumFractionDigits">2</property>
        <aspect pointcut="parseObject">nullFormatInterceptor</aspect>
    </component>
    <component name="fmfDecimal5p2" class="javax.swing.text.DefaultFormatterFactory">
        <property name="displayFormatter">
            <component name="ftrDecimal5p2WithGrouping" class="javax.swing.text.NumberFormatter">
                <arg>fmtDecimal5p2WithGrouping</arg>
           </component>
        </property>
        <property name="defaultFormatter">
            <component name="ftrDecimal5p2" class="javax.swing.text.NumberFormatter">
                <arg>fmtDecimal5p2</arg>
           </component>
        </property>
    </component>

テキストフィールドには、フォーマッタの設定の他、表示位置が右寄せになるよう設定。

EmployeeRefFrame.dicon(変更箇所のみ)
    <component name="lblSalaryFrom" class="s2study.ui.SLabel">
        <arg>"SALARY between"</arg>
    </component>
    <component name="txfSalaryFrom" class="s2study.ui.SFormattedTextField">
        <property name="formatterFactory">fmfDecimal5p2</property>
        <property name="horizontalAlignment">@javax.swing.JTextField@RIGHT</property>
    </component>
    <component name="lblSalaryTo" class="s2study.ui.SLabel">
        <arg>"and"</arg>
    </component>
    <component name="txfSalaryTo" class="s2study.ui.SFormattedTextField">
        <property name="formatterFactory">fmfDecimal5p2</property>
        <property name="horizontalAlignment">@javax.swing.JTextField@RIGHT</property>
    </component>

つーか、日記の編集画面すごく書き込みづらくなった。なんだこりゃ。