Skip navigation

Tag Archives: Netbeans


Taekwondo Tournament Management System atau Taekwondo TMS adalah sebuah perangkat lunak manajemen pertandingan Taekwondo. Perangkat lunak ini saya kembangkan berkerja sama dengan Wayang Sports, sebuah lembaga usaha yang dirintis oleh rekan saya yang bergerak di dalam usaha penyediaan perangkat-perangkat dijital untuk penyelenggaraan acara-acara olahraga.

Fungsi-fungsi aplikasi ini antara lain pembuatan turnamen, manajemen kelas-kelas turnamen serta peserta, serta manajemen bagan pertandingan. Fitur menarik dari aplikasi ini adalah aplikasi ditemani dengan perangkat keras yang dikembangkan oleh Wayang Sport untuk digunakan oleh juri dalam menilai pertandingan. Penjurian ini dilakukan secara realtime dan akan ditampilkan langsung oleh aplikasi. (contoh tampilan terlampir pada slide berikut)

Aplikasi Taekwondo TMS dikembangkan dengan menggunakan teknologi Netbeans Platform. Penggunaan teknologi ini sangat menguntungkan karena desainnya yang modular sehingga menjadikan aplikasi Taekwondo TMS ini dapat hanya menjadi satu sub-aplikasi dari banyak sub-sub aplikasi manajemen pertandingan untuk cabang-cabang lain yang terkemas dalam sebuah aplikasi besar. Selain penambahan modul-modul aplikasi per cabang, aplikasi besar ini nantinya akan ditambah fitur-fitur yang terintegrasi dengan media-media sosial seperti Facebook dan lain-lain.


Satu hal yang buat gw menyebalkan adalah membuat sebuah JFrame dengan tampilan yang mewah penuh warna-warni, rupa, bentuk, dan gambar tapi mudah digunakan untuk resolusi layar ataupun ukuran JFrame yang fleksibel. Salah satu solusi yang gw gunakan adalah dengan menggunakan SVG. SVG adalah format grafik vektor yang diimplementasikan dengan menggunakan XML. Karena itu SVG mudah digunakan baik dalam penampilan maupun dalam manipulasi gambar yang ditampilkan. Read More »


Untuk pengguna Linux atau UNIX pasti familiar dengan penggunaan options pada aplikasi berbasis CLI (command line interface). CLI options atau CLI parameter adalah sebuah mekanisme untuk memasukkan variabel ke dalam aplikasi tersebut.
Contohnya untuk di Linux atau UNIX

t76010@server42411:~$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print octal escapes for nongraphic characters
      --block-size=SIZE      use SIZE-byte blocks
  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                               modification of file status information)
                               with -l: show ctime and sort by name
                               otherwise: sort by ctime

Sedangkan di Windows pun ada format parameter yang berbeda (seringkali disebut switch) untuk command pada MS-DOS

Displays a list of files and subdirectories in a directory.

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N] [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
[drive:][path][filename]	Specifies drive, directory, and/or files to list.
attributes	

D  Directories                R  Read-only files
H  Hidden files               A  Files ready for archiving
S  System files               -  Prefix meaning not

/B	Uses bare format (no heading information or summary).
/C	Display the thousand separator in file sizes. This is the default. Use /-C to disable display of separator.
/D	Same as wide but files are list sorted by column.
/L	Uses lowercase.

Setiap bahasa pemrograman memiliki fitur parameter untuk memfasilitasi passing variabel ke dalam program. Akan tetapi umumnya bahasa tidak langsung menyediakan format passing variabel seperti di atas yakni melakukan passing variabel secara terstruktur.

Read More »


Postingan ini dan beberapa postingan berikutnya akan membahas mengenai Image Histogram sederhana dengan menggunakan Java. Image histogram adalah sebuah representasi dari distribusi warna sebuah gambar. Biasanya untuk sistem warna RGB, histogram ini dibangun dengan menghitung frekuensi nilai-nilai kompoisi tiap warna ini.

Image histogram ini dibuat untuk tugas kuliah Sistem Rekognisi. Pada postingan ini saya akan mempraktikkan bagaimana mengambil data sebuah pixel pada sebuah image dengan menggunakan Java. Hal ini dapat dilakukan dengan menggunakan library imageio

Kodenya cukup sederhana.

public static void main(String[] args) throws IOException {
        String imagepath = "C:\\lenna.bmp";
        BufferedImage image = ImageIO.read(new File(imagepath));
        int width = image.getWidth();
        int height = image.getHeight();
        int count[][] = new int[3][0x100];
        int RED = 0;
        int BLUE = 1;
        int GREEN = 2;
        int total = width * height;
        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
                int color = image.getRGB(i, j);
                int cred = (color & 0x00ff0000) >> 16;
                int cgreen = (color & 0x0000ff00) >> 8;
                int cblue = color & 0x000000ff;

                count[RED][cred]++;
                count[BLUE][cblue]++;
                count[GREEN][cgreen]++;
            }
        }
        for (int i = 0; i < 0x100; i++) {
            System.out.printf("%03d %04d %04d %04d\n", i, count[RED][i], count[BLUE][i], count[GREEN][i]);
        }
    }

Bagian yang paling menarik adalah bagian

int color = image.getRGB(i, j);
int cred = (color & 0x00ff0000) >> 16;
int cgreen = (color & 0x0000ff00) >> 8;
int cblue = color & 0x000000ff;

method getRGB mengembalikan sebuah nilai long integer yang berisi data RGBnya di mana kode blue berada pada least significant byte, green lebih signifikan, dan red berada pada posisi most significant byte.

Pada postingan selanjutnya akan dibahas cara integrasi komponen-komponen seperti progress bar dan chart untuk memperindah representasi dari histogram.


*Maaf baru posting setelah sekian lama*

Sekarang saya akan mencoba membuat kelas Entity Persistence pada project yang pernah diposting sebelum ini. Pada proyek itu telah dibuat Persistence Unitnya.
Read More »


Persistence Unit adalah sebuah unit data yang menjelaskan konfigurasi entity yang digunakan. Salah satu konfigurasinya berisi tentang storage tempat entity disimpan. Cara menambahkan PersistenceUnit pada sebuah Java project di Netbeans adalah sebagai berikut

Read More »


Didedikasikan buat rekan-rekan IF ITB 2006.

Ada sedikit permintaaan dari beberapa junior supaya saya sedikit mengupas tentang aplikasi medis sederhana di Java EE. Aplikasi ini cuman aplikasi pengaturan dokter, pasien, dan pemeriksaan. Aplikasi ini akan dibangun dengan menggunakan basis data MySQL dan IDE Netbeans.classdiagram

Read More »


Setelah jarang ngoding tampilan aplikasi di Netbeans, gw tadi pagi kesulitan buat ngeset sebuah JFrame supaya bisa ditengah-tengah layar. Ternyata ada cara mudahnya

  1. Klik kanan pada JFrame yang bersangkutan
  2. Pilih “Properties
  3. Pilih “Code
  4. Set “Form Size Policy” ke “Generate Resize Code
  5. Check “Generate Center

Voila, kalau Framenya dirun, akan tampil di tengah layar.


Persistence adalah sebuah fitur yang mampu melakukan mapping object ke relasional. Dengan adanya fitur ini maka kita bisa dengan mudah melakukan pengembangan objek dengan menggunakan basisdata tanpa harus mengkodekan koneksi manual ke database. Kemaren gw baru nyobain fitur persistence itu untuk Java EE dengan menggunakan Netbeans dan MySQL.

Ceritanya gw bikin sebuah table namanya products

CREATE TABLE `product` (
`ID` VARCHAR( 8 ) NOT NULL ,
`Name` TEXT NOT NULL ,
`Price` INT NOT NULL ,
`Quantity` INT NOT NULL ,
PRIMARY KEY ( `ID` )
) ENGINE = MYISAM ;

Untuk melakukan manajemennya bisa dilihat di sini.
Nantinya akan keluar
mysql1

Setelah itu kita bikin aplikasi berbasis Java EE, entah itu Enterprise app atau sekadar Web app.
Nah kita langsung coba bikin Class dari database.

mysql2

Setelah itu tinggal ikutin langkah-langkah aja.

mysql3

Kita pilih data source yang diperlukan…. Terus abis itu kita pilih table-table yang dibutuhkan juga… Dan nanti masing-masing table akan menjadi sebuah class.

mysql4

Nah nantinya kita akan punya sebuah class Product. (Nama product terpaksa direname sendiri karena pada table biasanya menggunakan nama plural sedangkan nama class biasanya singular)

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author Petra Barus
 */
@Entity
@Table(name = "products")
@NamedQueries({@NamedQuery(name = "Product.findAll", query = "SELECT p FROM Product p"), @NamedQuery(name = "Product.findById", query = "SELECT p FROM Product p WHERE p.id = :id"), @NamedQuery(name = "Product.findByPrice", query = "SELECT p FROM Product p WHERE p.price = :price"), @NamedQuery(name = "Product.findByQuantity", query = "SELECT p FROM Product p WHERE p.quantity = :quantity")})
public class Product implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID")
    private String id;
    @Basic(optional = false)
    @Lob
    @Column(name = "Name")
    private String name;
    @Basic(optional = false)
    @Column(name = "Price")
    private int price;
    @Basic(optional = false)
    @Column(name = "Quantity")
    private int quantity;

    public Product() {
    }

    public Product(String id) {
        this.id = id;
    }

    public Product(String id, String name, int price, int quantity) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.quantity = quantity;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Product)) {
            return false;
        }
        Product other = (Product) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "model.Product[id=" + id + "]";
    }

}

Salah satu cara mengatasi kemungkinan timeout yang diakibatkan oleh blocking pada postingan sebelumnya adalah dengan menggunakan multithread.

Read More »

%d blogger menyukai ini: