Membuat Pengaruh Goresan Pena Pada Komponen Textfield (Placeholder) Di Java

Untuk menambah daya tarik pada aplikasi java yang kita buat, perlu di tambahkan komponen-komponen lain. salah satunya yakni penambahan detail pada komponen java yang kita pakai. memang ketika ini sudah banyak library yang menyediakan class yang kita butuhkan untuk mempercantik tampilan kita (contohnya SwingX). Tapi tidak ada salahnya kalau kita menciptakan sendiri elemen-elemen tersebut biar dapat di modifikasi dan diubahsuaikan dengan kebutuhan kita.

Salah satunya dalah Place holder (entah nama ini benar atau tidak hehe) kalau salah silahkan diingatkan. placeholder yang saya maksud yakni goresan pena pada bab tengan komponen TextField. berikut contohnya:
Untuk menambah daya tarik pada aplikasi java yang kita buat Membuat imbas goresan pena pada komponen TextField (Placeholder) di Java

Nah bagai mana cara menciptakan imbas goresan pena tersebut di komponen TextField java?. idenya sih sederhana kita dapat meng-overide method paint() lalu memakai method drawString().
Oke ini ia kodenya:

Font font = getFont().deriveFont(Font.BOLD).deriveFont(Font.ITALIC); Graphics2D g2d = (Graphics2D) g; FontMetrics fontMetrics = g2d.getFontMetrics(font); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.GRAY); g2d.setFont(font); java.awt.geom.Rectangle2D rect = fontMetrics.getStringBounds("TEXT YANG DIINGINKAN", g2d); int textHeight = (int) rect.getHeight(); g2d.drawString("TEXT YANG DIINGINKAN", 5, textHeight + 3);  
Tapi kalo di perhatikan, ketika kita mengetikan sesuatu maka imbas goresan pena itu harus hilang, alasannya yakni kalau tetap muncul maka akan mengganggu tampilan teks yang ada maka di dalam fungsi paint tesebut kita perlu menambahkan sebuah kondidi. jadi kodenya di ubah menjadi sebagai berikut:
if ((new String(getPassword())).trim().equals("")) { Font font = getFont().deriveFont(Font.BOLD).deriveFont(Font.ITALIC); Graphics2D g2d = (Graphics2D) g; FontMetrics fontMetrics = g2d.getFontMetrics(font); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.GRAY);   g2d.setFont(font);          java.awt.geom.Rectangle2D rect = fontMetrics.getStringBounds("TEXT YANG DIINGINKAN", g2d); int textHeight = (int) rect.getHeight(); g2d.drawString("TEXT YANG DIINGINKAN", 5, textHeight + 3); } 
Bingung?, sepakat berikut isyarat lengkapnya supaya tidak bingung.

/*  * To change this template, choose Tools | Templates  * and open the template in the editor.  */ package javadanphp.swing;  import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JTextField; import javax.swing.text.Document;    /**  *  * @author Taopik Ridwan  */  public class CustomTextField extends JTextField {  private String placeholder = "Masukan Teks";      public CustomTextField() {          initListener();      }        public CustomTextField(String text) {          super(text);          initListener();      }        public CustomTextField(int columns) {          super(columns);          initListener();      }        public CustomTextField(String text, int columns) {          super(text, columns);          initListener();      }     
public CustomTextField(Document doc, String text, int columns) {          super(doc, text, columns);          initListener();      }        private void initListener() {          addKeyListener(new KeyAdapter() {              @Override              public void keyPressed(KeyEvent e) {                  super.keyPressed(e);                  repaint();              }          });      }        public String getPlaceholder() {          return placeholder;      }        public void setPlaceholder(String placeholder) {          this.placeholder = placeholder;          repaint();      }        @Override      protected void paintComponent(Graphics g) {          super.paintComponent(g);                   if (getText().trim().equals("")) { Font font = getFont().deriveFont(Font.BOLD).deriveFont(Font.ITALIC);                Graphics2D g2d = (Graphics2D) g;    FontMetrics fontMetrics = g2d.getFontMetrics(font);  g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);  g2d.setColor(Color.GRAY);  g2d.setFont(font);    java.awt.geom.Rectangle2D rect = fontMetrics.getStringBounds(placeholder, g2d);  int textHeight = (int) rect.getHeight();  g2d.drawString(placeholder, 5, textHeight + 3);  }  }  }    
Ini ia Hasilnya:
Untuk menambah daya tarik pada aplikasi java yang kita buat Membuat imbas goresan pena pada komponen TextField (Placeholder) di Java

Untuk menambah daya tarik pada aplikasi java yang kita buat Membuat imbas goresan pena pada komponen TextField (Placeholder) di Java

Jika agan-agan sekalian memakai Netbeans, maka kalau akan memakai komponen tadi, kita tinggal Drag and drop saja.
Untuk menambah daya tarik pada aplikasi java yang kita buat Membuat imbas goresan pena pada komponen TextField (Placeholder) di Java

Selain itu untuk merubah tulisannya kita tinggal melakukannnya di panel Properties
Untuk menambah daya tarik pada aplikasi java yang kita buat Membuat imbas goresan pena pada komponen TextField (Placeholder) di Java


Silahkan Di Download Kode Sumbernya (Dibuat memakai Netbeans 7.2)

Belum ada Komentar untuk "Membuat Pengaruh Goresan Pena Pada Komponen Textfield (Placeholder) Di Java"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel