Mengatur separator desimal pada JFormattedTextField dengan Locale


JFormatted textfield pada Swing biasanya digunakan untuk menampung input yang memiliki pattern atau tipe data tertentu yang tidak hanya sekedar teks, misalkan data yang berupa tanggal, currency, atau angka. Saya pun sendiri menggunakan JFormatted Textfield sebagai input karakter yang berupa angka, utamanya yang mengandung desimal dan bernilai ribuan. Nah, sayangnya bagi kita yang tinggal di Indonesia standar separator desimal dan ribuan yang digunakan mengikuti standar Inggris, dimana untuk pemisah ribuan menggunakan koma (“,000”) sedankan decimal menggunakan titik (“.”), untuk lebih lengkap nya daftar negara yang menggunakan format demikian bisa dilihat di Wikipedia. Nah, bagaimana sebenarnya cara mudah agar kita bisa mengaturnya menjadi format (“.000”) untuk ribuan dan (“,00”) untuk tanda desimal, cukup mudah sebenarnya, saya akan jelaskan langkahnya pada Netbeans IDE

Sebelumnya pastikan bentuk format angka yang akan kita gunakan, pada Properties->tab formatterFactory pilih format Number yang digunakan

kemudian pada tab Code->Custom Creation Code kita gunakan parameter dari class Number Format dengan instance dari class Locale seperti ini

new JFormattedTextField(NumberFormat.getInstance(Locale.GERMANY));

Loh, kenapa kita menggunakan Locale.GERMANY? kok tiba-tiba jadi negara Jerman bukan negara Indonesia aja? hehe

Seperti yang udah dijelasin di atas dari referensi Wikipedia tadi, ada daftar negara2 yang menggunakan format desimal yang mirip dengan negara kita, salah satunya negara Jerman, Kalo ngga salah sih negara yang menggunakan format yang sama dan ada di class Locale ada Italy juga,mungkin bisa dipake juga. .

Jadi seperti itu.. ngga terlalu susah kan ya.. selamat mencoba πŸ™‚

Advertisements

4 responses to “Mengatur separator desimal pada JFormattedTextField dengan Locale

  1. mas kalau mau buat untuk tanggal bagaimana ya? tp sebelum input tanda garis miringnya sudah keluar dl misal : (##/##/####)
    trims sebelumnya…

    • maksudnya menggunakan class MaskFormatter? Cara ini sedikit tricky

      jFormat.setFormatterFactory(new DefaultFormatterFactory(new DateFormatter(new SimpleDateFormat(“dd/mm/yyyy”))));
      try {
      MaskFormatter mf = new MaskFormatter(“##/##/####” );
      mf.install(jFormat);
      } catch (ParseException ex) {
      Logger.getLogger(SelectDBFReader.class.getName()).log(Level.SEVERE, null, ex);
      }

      Kalo sering liat2 stackoverflow, cara ini ngga di rekomendasikan soalnya bukan threadsafe, klo saya sendiri sih lebih suka pake library jCalendar, coba googling ya πŸ™‚

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s