<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDevelopment_Class%2FFormat</id>
		<title>Java/Development Class/Format - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDevelopment_Class%2FFormat"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Development_Class/Format&amp;action=history"/>
		<updated>2026-04-22T11:12:11Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Development_Class/Format&amp;diff=8393&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Development_Class/Format&amp;diff=8393&amp;oldid=prev"/>
				<updated>2010-06-01T07:01:10Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:01, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Development_Class/Format&amp;diff=8392&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Development_Class/Format&amp;diff=8392&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A format for String objects that is easier to persist ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/***&lt;br /&gt;
 *    This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 *    it under the terms of the GNU General Public License as published by&lt;br /&gt;
 *    the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 *    (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 *    This program is distributed in the hope that it will be useful,&lt;br /&gt;
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 *    GNU General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 *    You should have received a copy of the GNU General Public License&lt;br /&gt;
 *    along with this program; if not, write to the Free Software&lt;br /&gt;
 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.&lt;br /&gt;
 *&lt;br /&gt;
 *    Project: www.simpledbm.org&lt;br /&gt;
 *    Author : Dibyendu Majumdar&lt;br /&gt;
 *    Email  : dibyendu@mazumdar.demon.co.uk&lt;br /&gt;
 */&lt;br /&gt;
import java.nio.ByteBuffer;&lt;br /&gt;
/**&lt;br /&gt;
 * A format for String objects that is easier to persist. &lt;br /&gt;
 * &lt;br /&gt;
 * @author Dibyendu Majumdar&lt;br /&gt;
 * @since 26-Jun-2005&lt;br /&gt;
 */&lt;br /&gt;
public final class ByteString implements Comparable&amp;lt;ByteString&amp;gt; {&lt;br /&gt;
    &lt;br /&gt;
    private byte[] bytes;&lt;br /&gt;
    &lt;br /&gt;
    public ByteString() {&lt;br /&gt;
    }&lt;br /&gt;
    public ByteString(String s) {&lt;br /&gt;
        bytes = s.getBytes();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public ByteString(byte[] bytes) {&lt;br /&gt;
        this.bytes = bytes.clone();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
        if (bytes == null)&lt;br /&gt;
            return &amp;quot;&amp;quot;;&lt;br /&gt;
        return new String(bytes);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public int getStoredLength() {&lt;br /&gt;
        return bytes.length + (Short.SIZE / Byte.SIZE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void store(ByteBuffer bb) {&lt;br /&gt;
        short n = 0;&lt;br /&gt;
        if (bytes != null) {&lt;br /&gt;
            n = (short) bytes.length;&lt;br /&gt;
        }&lt;br /&gt;
        bb.putShort(n);&lt;br /&gt;
        if (n &amp;gt; 0) {&lt;br /&gt;
            bb.put(bytes, 0, n);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void retrieve(ByteBuffer bb) {&lt;br /&gt;
        short n = bb.getShort();&lt;br /&gt;
        if (n &amp;gt; 0) {&lt;br /&gt;
            bytes = new byte[n];&lt;br /&gt;
            bb.get(bytes);&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            bytes = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  public int compareTo(ByteString o) {&lt;br /&gt;
    /*&lt;br /&gt;
     * FIXME: This is inefficient &lt;br /&gt;
     */&lt;br /&gt;
    String s1 = new String(bytes);&lt;br /&gt;
    String s2 = new String(o.bytes);&lt;br /&gt;
    return s1.rupareTo(s2);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public int length() {&lt;br /&gt;
    return bytes.length;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public byte get(int offset) {&lt;br /&gt;
    return bytes[offset];&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Format Size ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (C) 2001-2003 Colin Bell&lt;br /&gt;
 * colbell@users.sourceforge.net&lt;br /&gt;
 *&lt;br /&gt;
 * This library is free software; you can redistribute it and/or&lt;br /&gt;
 * modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 * License as published by the Free Software Foundation; either&lt;br /&gt;
 * version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This library is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 * Lesser General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 * You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 * License along with this library; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 */&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.text.NumberFormat;&lt;br /&gt;
import java.util.regex.Matcher;&lt;br /&gt;
import java.util.regex.Pattern;&lt;br /&gt;
/**&lt;br /&gt;
 * General purpose utilities functions.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 */&lt;br /&gt;
public class Utilities&lt;br /&gt;
{&lt;br /&gt;
  public static String formatSize(long longSize, int decimalPos)&lt;br /&gt;
  {&lt;br /&gt;
     NumberFormat fmt = NumberFormat.getNumberInstance();&lt;br /&gt;
     if (decimalPos &amp;gt;= 0)&lt;br /&gt;
     {&lt;br /&gt;
        fmt.setMaximumFractionDigits(decimalPos);&lt;br /&gt;
     }&lt;br /&gt;
     final double size = longSize;&lt;br /&gt;
     double val = size / (1024 * 1024);&lt;br /&gt;
     if (val &amp;gt; 1)&lt;br /&gt;
     {&lt;br /&gt;
        return fmt.format(val).concat(&amp;quot; MB&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
     val = size / 1024;&lt;br /&gt;
     if (val &amp;gt; 10)&lt;br /&gt;
     {&lt;br /&gt;
        return fmt.format(val).concat(&amp;quot; KB&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
     return fmt.format(val).concat(&amp;quot; bytes&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get Percent Value ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Cobertura - http://cobertura.sourceforge.net/&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (C) 2005 Jeremy Thomerson&lt;br /&gt;
 *&lt;br /&gt;
 * Note: This file is dual licensed under the GPL and the Apache&lt;br /&gt;
 * Source License (so that it can be used from both the main&lt;br /&gt;
 * Cobertura classes and the ant tasks).&lt;br /&gt;
 *&lt;br /&gt;
 * Cobertura is free software; you can redistribute it and/or modify&lt;br /&gt;
 * it under the terms of the GNU General Public License as published&lt;br /&gt;
 * by the Free Software Foundation; either version 2 of the License,&lt;br /&gt;
 * or (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * Cobertura is distributed in the hope that it will be useful, but&lt;br /&gt;
 * WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 * General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 * You should have received a copy of the GNU General Public License&lt;br /&gt;
 * along with Cobertura; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307&lt;br /&gt;
 * USA&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
import java.text.NumberFormat;&lt;br /&gt;
/**&lt;br /&gt;
 * Abstract, not to be instantiated utility class for String functions.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Jeremy Thomerson&lt;br /&gt;
 */&lt;br /&gt;
public abstract class StringUtil&lt;br /&gt;
{&lt;br /&gt;
  /**&lt;br /&gt;
   * &amp;lt;p&amp;gt;&lt;br /&gt;
   * Replaces all instances of &amp;quot;replace&amp;quot; with &amp;quot;with&amp;quot; from the &amp;quot;original&amp;quot;&lt;br /&gt;
   * string.&lt;br /&gt;
   * &amp;lt;/p&amp;gt;&lt;br /&gt;
   *&lt;br /&gt;
   * &amp;lt;p&amp;gt;&lt;br /&gt;
   * NOTE: it is known that a similar function is included in jdk 1.4 as replaceAll(),&lt;br /&gt;
   * but is written here so as to allow backward compatibility to users using SDK&amp;quot;s&lt;br /&gt;
   * prior to 1.4&lt;br /&gt;
   * &amp;lt;/p&amp;gt;&lt;br /&gt;
   * &lt;br /&gt;
   * @param original The original string to do replacement on.&lt;br /&gt;
   * @param replace The string to replace.&lt;br /&gt;
   * @param with The string to replace &amp;quot;replace&amp;quot; with.&lt;br /&gt;
   * @return The replaced string.&lt;br /&gt;
   */&lt;br /&gt;
  public static String replaceAll(String original, String replace, String with)&lt;br /&gt;
  {&lt;br /&gt;
    if (original == null)&lt;br /&gt;
    {&lt;br /&gt;
      return original;&lt;br /&gt;
    }&lt;br /&gt;
    final int len = replace.length();&lt;br /&gt;
    StringBuffer sb = new StringBuffer(original.length());&lt;br /&gt;
    int start = 0;&lt;br /&gt;
    int found = -1;&lt;br /&gt;
    while ((found = original.indexOf(replace, start)) != -1)&lt;br /&gt;
    {&lt;br /&gt;
      sb.append(original.substring(start, found));&lt;br /&gt;
      sb.append(with);&lt;br /&gt;
      start = found + len;&lt;br /&gt;
    }&lt;br /&gt;
    sb.append(original.substring(start));&lt;br /&gt;
    return sb.toString();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Takes a double and turns it into a percent string.&lt;br /&gt;
   * Ex.  0.5 turns into 50%&lt;br /&gt;
   * &lt;br /&gt;
   * @param value&lt;br /&gt;
   * @return corresponding percent string&lt;br /&gt;
   */&lt;br /&gt;
  public static String getPercentValue(double value)&lt;br /&gt;
  {&lt;br /&gt;
    //moved from HTMLReport.getPercentValue()&lt;br /&gt;
      value = Math.floor(value * 100) / 100; //to represent 199 covered lines from 200 as 99% covered, not 100 %&lt;br /&gt;
    return NumberFormat.getPercentInstance().format(value);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Int format and conversion ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Created on Dec 27, 2005&lt;br /&gt;
 */&lt;br /&gt;
/*&lt;br /&gt;
 Copyright 2007 Robert C. Ilardi&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class IntUtils {&lt;br /&gt;
  public static int IntLen(int i) {&lt;br /&gt;
    int len;&lt;br /&gt;
    int result;&lt;br /&gt;
    if (i &amp;gt;= 10) {&lt;br /&gt;
      len = 2;&lt;br /&gt;
      result = i / 10;&lt;br /&gt;
      while (result &amp;gt;= 10) {&lt;br /&gt;
        len++;&lt;br /&gt;
        result /= 10;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      len = 1;&lt;br /&gt;
    }&lt;br /&gt;
    return len;&lt;br /&gt;
  }&lt;br /&gt;
  public static byte[] IntToBytes(int i) {&lt;br /&gt;
    int digits, hiLimit, digit;&lt;br /&gt;
    byte[] bArr;&lt;br /&gt;
    digits = IntLen(i);&lt;br /&gt;
    bArr = new byte[digits];&lt;br /&gt;
    hiLimit = (int) Math.pow(10, digits - 1);&lt;br /&gt;
    for (int j = 0; j &amp;lt; digits; j++) {&lt;br /&gt;
      digit = i / hiLimit;&lt;br /&gt;
      bArr[j] = (byte) (48 + digit);&lt;br /&gt;
      i -= (digit * hiLimit);&lt;br /&gt;
      hiLimit /= 10;&lt;br /&gt;
    }&lt;br /&gt;
    return bArr;&lt;br /&gt;
  }&lt;br /&gt;
  public static byte[] AddZeroPadding(byte[] bArr, int fixedLen) {&lt;br /&gt;
    byte[] flArr;&lt;br /&gt;
    int cpStartIndex;&lt;br /&gt;
    if (bArr.length &amp;gt;= fixedLen) {&lt;br /&gt;
      flArr = bArr;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      flArr = new byte[fixedLen];&lt;br /&gt;
      cpStartIndex = fixedLen - bArr.length;&lt;br /&gt;
      //Pre-pend Zeros for Padding as needed...&lt;br /&gt;
      for (int i = 0; i &amp;lt; cpStartIndex; i++) {&lt;br /&gt;
        flArr[i] = (byte) 48;&lt;br /&gt;
      }&lt;br /&gt;
      System.arraycopy(bArr, 0, flArr, cpStartIndex, bArr.length);&lt;br /&gt;
    }&lt;br /&gt;
    return flArr;&lt;br /&gt;
  }&lt;br /&gt;
  public static int BytesToInt(byte[] bArr) {&lt;br /&gt;
    int cnt = 0, num = 0;&lt;br /&gt;
    for (int i = bArr.length - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
      num += (bArr[i] - 48) * ((int) Math.pow(10, cnt++));&lt;br /&gt;
    }&lt;br /&gt;
    return num;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    byte[] bArr;&lt;br /&gt;
    int num;&lt;br /&gt;
    System.out.println(BytesToInt(AddZeroPadding(&amp;quot;&amp;quot;.getBytes(), 4)));&lt;br /&gt;
    System.out.println(BytesToInt(AddZeroPadding(&amp;quot;1&amp;quot;.getBytes(), 4)));&lt;br /&gt;
    System.out.println(BytesToInt(AddZeroPadding(&amp;quot;23&amp;quot;.getBytes(), 4)));&lt;br /&gt;
    System.out.println(BytesToInt(AddZeroPadding(&amp;quot;555&amp;quot;.getBytes(), 4)));&lt;br /&gt;
    System.out.println(BytesToInt(AddZeroPadding(&amp;quot;1234&amp;quot;.getBytes(), 4)));&lt;br /&gt;
    System.out.println(BytesToInt(AddZeroPadding(&amp;quot;12345&amp;quot;.getBytes(), 4)));&lt;br /&gt;
    for (int i = 0; i &amp;lt;= 1000000000; i++) {&lt;br /&gt;
      bArr = IntToBytes(i);&lt;br /&gt;
      num = BytesToInt(bArr);&lt;br /&gt;
      //System.out.println(num);&lt;br /&gt;
      if (num != i) {&lt;br /&gt;
        System.out.println(num + &amp;quot; != &amp;quot; + i);&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      else if (num % 1000000 == 0) {&lt;br /&gt;
        System.out.println(num);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Make custom Input Text Formatter in Java ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.text.ParseException;&lt;br /&gt;
import javax.swing.JFormattedTextField;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.text.DefaultFormatter;&lt;br /&gt;
class MyFormatter extends DefaultFormatter {&lt;br /&gt;
  public MyFormatter() {&lt;br /&gt;
    super();&lt;br /&gt;
  }&lt;br /&gt;
  public String valueToString(Object arg0) throws ParseException {&lt;br /&gt;
    return super.valueToString(arg0);&lt;br /&gt;
  }&lt;br /&gt;
  public Object stringToValue(String arg0) throws ParseException {&lt;br /&gt;
    try {&lt;br /&gt;
      int value = Integer.parseInt(arg0);&lt;br /&gt;
      if (value &amp;gt;= 1 &amp;amp;&amp;amp; value &amp;lt;= 10) {&lt;br /&gt;
        return &amp;quot;&amp;quot; + value;&lt;br /&gt;
      } else {&lt;br /&gt;
        return &amp;quot;Invalid&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      return &amp;quot;Invalid&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main extends JFrame {&lt;br /&gt;
  public Main() {&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    JLabel label = new JLabel(&amp;quot;Number :&amp;quot;);&lt;br /&gt;
    JFormattedTextField tf = new JFormattedTextField(new MyFormatter());&lt;br /&gt;
    tf.setColumns(10);&lt;br /&gt;
    panel.add(label);&lt;br /&gt;
    panel.add(tf);&lt;br /&gt;
    getContentPane().add(panel, BorderLayout.SOUTH);&lt;br /&gt;
    pack();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Main mfe = new Main();&lt;br /&gt;
    mfe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    mfe.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== String Align Demo: extends Format ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002.&lt;br /&gt;
 * All rights reserved. Software written by Ian F. Darwin and others.&lt;br /&gt;
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 * 2. Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *    documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS&amp;quot;&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED&lt;br /&gt;
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS&lt;br /&gt;
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 * &lt;br /&gt;
 * Java, the Duke mascot, and all variants of Sun&amp;quot;s Java &amp;quot;steaming coffee&lt;br /&gt;
 * cup&amp;quot; logo are trademarks of Sun Microsystems. Sun&amp;quot;s, and James Gosling&amp;quot;s,&lt;br /&gt;
 * pioneering role in inventing and promulgating (and standardizing) the Java &lt;br /&gt;
 * language and environment is gratefully acknowledged.&lt;br /&gt;
 * &lt;br /&gt;
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&amp;amp;T, for&lt;br /&gt;
 * inventing predecessor languages C and C++ is also gratefully acknowledged.&lt;br /&gt;
 */&lt;br /&gt;
import java.text.FieldPosition;&lt;br /&gt;
import java.text.Format;&lt;br /&gt;
import java.text.ParsePosition;&lt;br /&gt;
public class StringAlignDemo {&lt;br /&gt;
  /** Demonstrate and test StringAlign class */&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    String[] mesg = {&amp;quot;JavaFun&amp;quot;, &amp;quot;JavaFun!&amp;quot; };&lt;br /&gt;
    for (int i=0; i&amp;lt;mesg.length; i++) {&lt;br /&gt;
      System.out.println(&amp;quot;Input String \&amp;quot;&amp;quot; + mesg[i] + &amp;quot;\&amp;quot;&amp;quot;);&lt;br /&gt;
      dump(StringAlign.JUST_LEFT, 5,&lt;br /&gt;
        new StringAlign(5, StringAlign.JUST_LEFT).format(mesg[i]));&lt;br /&gt;
      dump(StringAlign.JUST_LEFT, 10,&lt;br /&gt;
        new StringAlign(10, StringAlign.JUST_LEFT).format(mesg[i]));&lt;br /&gt;
      dump(StringAlign.JUST_CENTER, 5,&lt;br /&gt;
        new StringAlign(5, StringAlign.JUST_CENTER).format(mesg[i]));&lt;br /&gt;
      dump(StringAlign.JUST_CENTER, 10,&lt;br /&gt;
        new StringAlign(10, StringAlign.JUST_CENTER).format(mesg[i]));&lt;br /&gt;
      dump(StringAlign.JUST_RIGHT, 5,&lt;br /&gt;
        new StringAlign(5, StringAlign.JUST_RIGHT).format(mesg[i]));&lt;br /&gt;
      dump(StringAlign.JUST_RIGHT, 10,&lt;br /&gt;
        new StringAlign(10, StringAlign.JUST_RIGHT).format(mesg[i]));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static void dump(int format, int len, String s) {&lt;br /&gt;
    System.out.print((char)format + &amp;quot;[&amp;quot; + len + &amp;quot;]&amp;quot;);&lt;br /&gt;
    System.out.print(&amp;quot; ==&amp;gt; \&amp;quot;&amp;quot;);&lt;br /&gt;
    System.out.print(s);&lt;br /&gt;
    System.out.print(&amp;quot;&amp;quot;&amp;quot;);&lt;br /&gt;
    System.out.println();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/** Bare-minimum String formatter (string aligner).&lt;br /&gt;
 * XXX When 1.5 is common, change from ints to enum for alignment.&lt;br /&gt;
 */&lt;br /&gt;
class StringAlign extends Format {&lt;br /&gt;
  /* Constant for left justification. */&lt;br /&gt;
  public static final int JUST_LEFT = &amp;quot;l&amp;quot;;&lt;br /&gt;
  /* Constant for centering. */&lt;br /&gt;
  public static final int JUST_CENTRE = &amp;quot;c&amp;quot;;&lt;br /&gt;
  /* Centering Constant, for those who spell &amp;quot;centre&amp;quot; the American way. */&lt;br /&gt;
  public static final int JUST_CENTER = JUST_CENTRE;&lt;br /&gt;
  /** Constant for right-justified Strings. */&lt;br /&gt;
  public static final int JUST_RIGHT = &amp;quot;r&amp;quot;;&lt;br /&gt;
  /** Current justification */&lt;br /&gt;
  private int just;&lt;br /&gt;
  /** Current max length */&lt;br /&gt;
  private int maxChars;&lt;br /&gt;
    /** Construct a StringAlign formatter; length and alignment are&lt;br /&gt;
     * passed to the Constructor instead of each format() call as the&lt;br /&gt;
     * expected common use is in repetitive formatting e.g., page numbers.&lt;br /&gt;
     * @param nChars - the length of the output&lt;br /&gt;
     * @param just - one of JUST_LEFT, JUST_CENTRE or JUST_RIGHT&lt;br /&gt;
     */&lt;br /&gt;
  public StringAlign(int maxChars, int just) {&lt;br /&gt;
    switch(just) {&lt;br /&gt;
    case JUST_LEFT:&lt;br /&gt;
    case JUST_CENTRE:&lt;br /&gt;
    case JUST_RIGHT:&lt;br /&gt;
      this.just = just;&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;invalid justification arg.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (maxChars &amp;lt; 0) {&lt;br /&gt;
      throw new IllegalArgumentException(&amp;quot;maxChars must be positive.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    this.maxChars = maxChars;&lt;br /&gt;
  }&lt;br /&gt;
  /** Format a String.&lt;br /&gt;
     * @param input _ the string to be aligned.&lt;br /&gt;
     * @parm where - the StringBuffer to append it to.&lt;br /&gt;
     * @param ignore - a FieldPosition (may be null, not used but&lt;br /&gt;
     * specified by the general contract of Format).&lt;br /&gt;
     */&lt;br /&gt;
  public StringBuffer format(&lt;br /&gt;
    Object obj, StringBuffer where, FieldPosition ignore)  {&lt;br /&gt;
    String s = (String)obj;&lt;br /&gt;
    String wanted = s.substring(0, Math.min(s.length(), maxChars));&lt;br /&gt;
    // Get the spaces in the right place.&lt;br /&gt;
    switch (just) {&lt;br /&gt;
      case JUST_RIGHT:&lt;br /&gt;
        pad(where, maxChars - wanted.length());&lt;br /&gt;
        where.append(wanted);&lt;br /&gt;
        break;&lt;br /&gt;
      case JUST_CENTRE:&lt;br /&gt;
        int toAdd = maxChars - wanted.length();&lt;br /&gt;
        pad(where, toAdd/2);&lt;br /&gt;
        where.append(wanted);&lt;br /&gt;
        pad(where, toAdd - toAdd/2);&lt;br /&gt;
        break;&lt;br /&gt;
      case JUST_LEFT:&lt;br /&gt;
        where.append(wanted);&lt;br /&gt;
        pad(where, maxChars - wanted.length());&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return where;&lt;br /&gt;
  }&lt;br /&gt;
  protected final void pad(StringBuffer to, int howMany) {&lt;br /&gt;
    for (int i=0; i&amp;lt;howMany; i++)&lt;br /&gt;
      to.append(&amp;quot; &amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  /** Convenience Routine */&lt;br /&gt;
  String format(String s) {&lt;br /&gt;
    return format(s, new StringBuffer(), null).toString();&lt;br /&gt;
  }&lt;br /&gt;
  /** ParseObject is required, but not useful here. */&lt;br /&gt;
  public Object parseObject (String source, ParsePosition pos)  {&lt;br /&gt;
    return source;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The # symbol shows a digit or nothing if no digit present ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
import java.text.DecimalFormat;&lt;br /&gt;
import java.text.Format;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    Format formatter = new DecimalFormat(&amp;quot;##&amp;quot;);&lt;br /&gt;
    String s = formatter.format(-1234.567);&lt;br /&gt;
    System.out.println(s);&lt;br /&gt;
    s = formatter.format(0);&lt;br /&gt;
    System.out.println(s);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>