Apa kelebihan SwingX? SwingX menawarkan fitur-fitur ekstra yang tidak ditemui di Swing secara siap jadi. Sebagai contoh, ada yang disebut sebagai Highlighter, untuk memberi highlight (bisa berupa warna background berbeda dan sebagainya) pada sel tertentu di JXTable, JXList, JXTree, dan sebagainya. Komponen yang diawali JX kebanyakan adalah turunan dari komponen Swing standar, misalnya JXTable adalah turunan dari JTable. Demikian juga,JXComboBox adalah turunan dari JComboBox. JXComboBox sudah mendukung fitur highlight dengan adanya fungsi addHighlighter(). Jika kita ingin menampilkan nilai dibawah 50 dengan background merah di JXComboBox, kita dapat menggunakan ColorHighlighter, salah satu implementasi dari Highlighter, seperti pada contoh berikut ini:
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import org.jdesktop.swingx.JXComboBox;
import org.jdesktop.swingx.decorator.ColorHighlighter;
import org.jdesktop.swingx.decorator.ComponentAdapter;
import org.jdesktop.swingx.decorator.HighlightPredicate;
public class App extends JFrame
{
private JXComboBox cboTest;
public App() {
super("Latihan SwingX");
cboTest = new JXComboBox(new Integer[] {100, 50, 30, 80, 70, 45, 50, 60});
ColorHighlighter colorHighlight = new ColorHighlighter();
colorHighlight.setBackground(Color.RED);
colorHighlight.setForeground(Color.WHITE);
colorHighlight.setHighlightPredicate(new HighlightPredicate() {
@Override
public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
if ((Integer)adapter.getValue() < 50) {
return true;
} else {
return false;
}
}
});
cboTest.addHighlighter(colorHighlight);
setLayout(new FlowLayout());
add(cboTest);
add(new JButton("TEST"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
setVisible(true);
}
public static void main( String[] args )
{
new App();
}
}
Hasil dari tampilan program di atas akan terlihat seperti:
Pada program di atas, fungsi setHighlightPredicate() di ColorHighlighter akan memeriksa apakah suatu nilai perlu di-highlight atau tidak (berdasarkan nilai kembalian true atau false).
Selain itu, SwingX juga menawarkan komponen baru, seperti JXDatePicker. Ini adalah contoh komponen yang sering dibutuhkan oleh aplikasi, tetapi tidak disediakan oleh Swing secara langsung. Berikut ini adalah contoh tampilanJXDatePicker:
SwingX juga memiliki kotak dialog siap pakai, seperti JXTipOfTheDay, yang umum dipakai untuk menampilkan tips di program. Berikut ini adalah contoh potongan kode program yang mempergunakan JXTipOfTheDay:
tipOfTheDay = new JXTipOfTheDay();
tipOfTheDay.setModel(new TipOfTheDayModel() {
private Tip[] tips = {
new Tip() {
@Override
public String getTipName() {
return "Tips 1";
}
@Override
public Object getTip() {
return "Tahukah Anda SwingX menyediakan komponen siap jadi?";
}
},
new Tip() {
@Override
public String getTipName() {
return "Tip 2";
}
@Override
public Object getTip() {
return "Anda bisa membuat table dengan highlighter di SwingX";
}
}
};
@Override
public int getTipCount() {
return tips.length;
}
@Override
public Tip getTipAt(int index) {
return tips[index];
}
});
tipOfTheDay.setCurrentTip(1);
tipOfTheDay.showDialog(this);
Contoh tampilan program di atas akan terlihat seperti: