Selasa, 04 Januari 2011

Membuat Auto Resize ComboBox

Kadang kita memiliki sebuah combobox yang berisi item dengan ukuran yang panjang. Untuk menampilkan item-item tersebut secara benar, maka kita harus membuat combobox dengan ukuran yang sesuai, sehingga kadang akan sangat memakan tempat.




Untuk mengatasinya kita dapat membuat sebuah combobox yang ukuran popupnya sesuai dengan ukuran item terpanjang dalam list. Untuk itu kita buat saja sebuah class baru yang diturunkan dari class JComboBox.



import java.awt.Dimension;
import java.awt.FontMetrics;
import javax.swing.JComboBox;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author hauw
*/
public class AutoResizeComboBox extends JComboBox {

@Override
public Dimension getSize() {
Dimension dimension = new Dimension();

dimension.width = getPanjangPopup();

return dimension;
}

private int getPanjangPopup() {
int panjangComboBox = (int) super.getSize().getWidth();
if (panjangComboBox < getTeksTerpanjang()) {
return getTeksTerpanjang();
}
return panjangComboBox;
}

private int getTeksTerpanjang() {
int panjangTeks = 0;
int count = getItemCount();
for (int i = 0; i < count; i++) {
FontMetrics fontMetrics = getFontMetrics(getFont());
String teks = getItemAt(i).toString();
if (panjangTeks < fontMetrics.stringWidth(teks)) {
panjangTeks = fontMetrics.stringWidth(teks);
}
}
return panjangTeks + 5;
}
}



Lihat perbedaannya pada gambar berikut



Kalo ingin download projectnya disini ya...

ComboBox Resizable.rar

1 komentar:

  1. WinStar World Casino And Resort - JamBase
    You've never been to a WinStar Casino And 충청북도 출장샵 Resort 김천 출장안마 in Las Vegas before. Just 강릉 출장마사지 a few minutes from the 아산 출장마사지 strip, this is the casino you'll 서울특별 출장샵

    BalasHapus