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