Mempercantik Tampilan Jtable Pada Aplikasi Java

Sebagai programmer java, penggunaan JTable yaitu satu hal yang tidak sanggup dihindarkan. JTable merupakan komponen grid yang terdiri dari baris dan kolom. JTable merupakan komponen yang sanggup dipakai untuk menampilkan data ibarat pada spreadsheet (Excel, Libre Office, dll).

Satu hal yang berdasarkan saja cukup mengganggu yaitu tampilan dari JTable itu sendiri. jikalau data tabel cukup banyak, ketidak nyamanan itu tidak terlihat, namu jikalau jumlah data dalam JTablenya sedikit, ada satuhal yang menggangu tampilan. Hal ini yaitu JTable akan terlihat menggantung pada panel kawasan tabel disimpan. berikut contohnya:

 penggunaan JTable yaitu satu hal yang tidak sanggup dihindarkan Mempercantik tampilan JTable pada Aplikasi Java

Biasanya sih kita "agak" gak peduli pada tampilan JTable yang ibarat ini, namun yang perlu di perhatikan, tampilan merupakan salah satu pertimbangan bagi user/pengguna aplikasi untuk membeli aplikasi yang kita buat. bahwasanya kita sanggup merubah tampilan JTable diatas agar terlihat lebih menarik. berikut contohnya:

 penggunaan JTable yaitu satu hal yang tidak sanggup dihindarkan Mempercantik tampilan JTable pada Aplikasi Java


Terlihat bedanya kan? space yang sebelumnya kosong terisi dengan tabel sehingga terlihat lebih rapi. untuk membuatnya, kita sanggup membuatnya dengan cara menciptakan UI tersendiri untuk tabel yang kita inginkan. berikut isyarat yang sanggup agan-agan gunakan agar JTable yang agan buat sanggup lebih menarik.

package javadanphp.customtable;  import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JComponent; import javax.swing.JScrollPane; import javax.swing.JViewport; import javax.swing.ViewportLayout; import javax.swing.plaf.basic.BasicTableUI;  /**  *  * @author Taopik Ridwan  */ public class CustomTableUI extends BasicTableUI {      private static final Color EVEN_ROW_COLOR = new Color(241, 245, 250);     private PropertyChangeListener fAncestorPropertyChangeListener =             createAncestorPropertyChangeListener();      @Override     public void installUI(JComponent c) {         super.installUI(c);         table.setShowVerticalLines(true);         table.setShowHorizontalLines(false);         table.setShowGrid(false);         table.setIntercellSpacing(new Dimension(0, 0));          table.addPropertyChangeListener("ancestor", fAncestorPropertyChangeListener);     }      private PropertyChangeListener createAncestorPropertyChangeListener() {         return new PropertyChangeListener() {             @Override             public void propertyChange(PropertyChangeEvent evt) {                 // indicate that the parent of the JTable has changed.                 parentDidChange();             }         };     }      private void parentDidChange() {         if (table.getParent() instanceof JViewport && table.getParent().getParent() instanceof JScrollPane) {             JScrollPane scrollPane = (JScrollPane) table.getParent().getParent();             scrollPane.getViewport().setLayout(new BugFixedViewportLayout());         }     }      @Override     public void paint(Graphics g, JComponent c) {         int rowAtPoint = table.rowAtPoint(g.getClipBounds().getLocation());         int topY = rowAtPoint < 0 ? g.getClipBounds().y : table.getCellRect(rowAtPoint, 0, true).y;         int currentRow = rowAtPoint < 0 ? 0 : rowAtPoint;         while (topY < g.getClipBounds().y + g.getClipBounds().height) {             int bottomY = topY + table.getRowHeight();             g.setColor(getRowColor(currentRow));             g.fillRect(g.getClipBounds().x, topY, g.getClipBounds().width, bottomY);             topY = bottomY;             currentRow++;         }          super.paint(g, c);     }      private Color getRowColor(int row) {         return row % 2 == 0 ? EVEN_ROW_COLOR : table.getBackground();     }      // Memodifikasi Viewport untuk JTable     private class BugFixedViewportLayout extends ViewportLayout {          @Override         public void layoutContainer(Container parent) {             JViewport vp = (JViewport) parent;             Component view = vp.getView();              if (view == null) {                 return;             }              Point viewPosition = vp.getViewPosition();             Dimension viewPrefSize = view.getPreferredSize();             Dimension vpSize = vp.getSize();             Dimension viewSize = new Dimension(viewPrefSize);              if ((viewPosition.x == 0) && (vpSize.width > viewPrefSize.width)) {                 viewSize.width = vpSize.width;             }              if ((viewPosition.y == 0) && (vpSize.height > viewPrefSize.height)) {                 viewSize.height = vpSize.height;             }              if (!viewSize.equals(viewPrefSize)) {                 vp.setViewSize(viewSize);             }         }     } } 
Nah silahkan pelajari dan coba run (Kode Sumbernya sanggup di Download di tamat artikel). Bagaimana memakai Class ini? jawabannya sangat gampang, agan tinggal menambahkan ui tersebut kedalam Jtable dengan method setUI(). berikut teladan implementasinya:

 penggunaan JTable yaitu satu hal yang tidak sanggup dihindarkan Mempercantik tampilan JTable pada Aplikasi Java
Penggunaan Class TableCustom.java pada JTable


Silahkan Download Kode sumber untuk artikel ini:
Download file contoh Mempercantik tampilan JTable pada Aplikasi Java (Dibuat memakai Netbeans 7.2)

Terima kasih sudah meluangkan waktu untuk mengunjungi blog ini.

Belum ada Komentar untuk "Mempercantik Tampilan Jtable Pada Aplikasi Java"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel