Cài đặt thành phần SwingX trong Netbeans

Source : Swinglabs
translate: fly2universe
date: 7.6.2010

Dự án SwingX chứa cả thành phần mở rộng Swing, thành phần Swing mới và APIs. Ví dụ: JXTable là sự mở rộng từ chuẩn JTable. Ngoài ra, JXDatePicker là một thành phần mới cho phép người dùng lựa chọn ngày tháng trong giao diện người dùng (UI). Cả hai là những thành phần trực quan của JavaBean. Trong SwingX cũng có những thành phần JavaBean không trực quan như GlossPainter, LinearGradientPainter, and PinstripePainter.

Tất cả các thành phần của JavaBean, cho dù có trực quan hay không trực quan đều có thể được thêm vào bảng JavaBean (NetBeans palette) và sử dụng từ bên trong Matisse GUI. Bài hướng dẫn này sẽ đi qua quá trình cài đặt và sử dụng từ bên trong NetBeans.

Bước 1: Tải SwingX

Bước đầu tiên là tải SwingX.  Có hai cách để làm điều này.  Cách dễ nhất là để làm điều này là đơn giãn tải SwingX tại trang download. Nếu bạn vào trang rìa cắt, bạn có thể lấy source trực tiếp từ  CVS và build project. Để làm việc này với NetBean, hãy xem tài liệu hướng dẫn sử dụng CVS

Một khi bạn đã tải mã nguồn, tiến hành build project. Từ  dòng lệnh, có thể làm việc này bằng cách thực thi lệnh “ant jar”. hoặc trong NetBeans bạn có thể build project một cách dễ dàng. Một khi build thành công, file swingx.jar sẽ được đặt trong thư mục /dist của dự  án. Tại thời điểm này, bạn sẵn sàng tích hợp thành phần SwingX với bảng palette NetBeans.

Bước 2 : Quản lý thành phần Palette

Work in Progress.

Nội dung của trang này chưa sẵn sàng. Nếu bạn tình cờ có một mô tả tốt về cách làm thế nào để thêm thành phần và làm thế nào để quản lý thành phần Pallete nói chung, hãy giúp chúng tôi cải thiện nội dung của bài hướng dẫn này và cho chúng tôi biết những nội dung đề nghị có thể tại đây.

Bước 3: Làm nổi bật dòng (Row Highlighting)

JXTable hổ trợ kỹ thuật highlighting làm thay đổi màu nền của dòng. Với JTable, bạn có thể cần cung cấp  renderer của riêng bạn để làm được điều này; với JXTable, bạn cung cấp một hay nhiều Highlighters. Một Highlighter thi hành một luật cho việc làm thế nào nền của một dòng được tô màu.

Trong SampleJXTableDemo, chúng tôi sử dụng AlternateRowHighlighter, là một lớp con của Highlighter với thể hiện tỉnh Highlighter được cấu hình sẵn cho tác vụ này. Demo sử dụng AlternateRowHighlighter.classicLinePrinter để làm highligh.

    jxTable.setHighlighters(new HighlighterPipeline(
        new Highlighter[]{ AlternateRowHighlighter.classicLinePrinter }));

Lớp AlternateRowHighlighter thay đổi màu nền của mỗi dòng khác trong bảng. Lớp classicLinePrinter bắt chước bảng màu trên máy in cũ nơi mà mỗi dòng khác đã được tô màu xanh ánh sáng, để giúp cải thiện tính dễ đọc, đặc biệt là trên bảng rộng của dữ liệu.

Một JXTable có thể có một hoặc nhiều Highlighters được chỉ định trong lớp HighlighterPipeline. Khái niệm ‘pipeline’ thì cũng được sử dụng cho bộ lộc và sắp xếp. HighlighterPipeline thì tạo đối tượng với mãng của  Highlighters, nhưng bạn cũng chỉ có thể thêm hoặc gở bỏ Highlighters từ  HighlighterPipeline bằng cách sử dụng hàm addHighlighter() và removeHighlighter(). Trong ví dụ của chúng tôi, chúng tôi sủ dụng một lớp đơn  Highlighter duy nhất để thông qua như là một mãng đến HighlighterPipeline.

Trong demo SampleJXTable, chúng tôi thêm một highlighter thứ hai sau khi chuột di chuyển qua và làm nổi bật dòng được rê qua:

    // ...oops! we forgot one
    jxTable.getHighlighters().addHighlighter(
        new RolloverHighlighter(Color.BLACK, Color.WHITE ));
    jxTable.setRolloverEnabled(true);

When more than one Highlighter is in the HighlighterPipeline, each one is called in turn to apply its highlighting. You could add a ConditionalHighlighter on top of the AlternateHighlighter so that, apart from every other row being colored, certain columns that meet conditional criteria are automatically highlighted as well. Of course, you can also write your own Highlighters.

Bước 4: Sắp xếp và Lọc

Với JTable, programmers had to wrap the table in a TableSorter hoặc cơ chế khác để cung cấp cho việc sắp xếp tự động. JXTable được xây dựng sẵn tính năng sắp bằng cột: người dùng có thể sắp xếp bất cứ cột nào bằng cách click trên nó. Cột sẽ được sắp xếp luân phiên theo thứ tự tăng dần hoặc giảm dần tại mỗi thời điểm dòng được click.

JXTables mặc định bật tính năng sort. Bạn có thể vô hiệu hóa tất cả các cột bằng hàm setSortingEnabled(boolean allowSort). Bạn cũng có thể vô hiệu hóa chỉ một cột duy nhất bằng cách dùng setSorterClass(String sorterClassName) với tên lớp được sort là null.

Mặc định sorter sử dụng trên một cột có thể được ghi đè bằng cách cung cấp một  giá trị so sánh mới cho thuật toán sắp xếp. Một ví dụ tốt cho vấn đề này trong demo SwingXDemo, where a point (x, y) is sorted on the value of x and y as a Point, and not as a String. In the SimpleJXTableDemo, we create a special sorter for our columns with float values, to have the column sort in proper numeric order.

    Comparator numberComparator = new Comparator() {
        public int compare(Object o1, Object o2) {
            Double d1 = Double.valueOf(o1 == null ? "0" : (String)o1);
            Double d2 = Double.valueOf(o2 == null ? "0" : (String)o2);
            return d1.compareTo(d2);
        }
    };
    // First, the long way to assign--just to show there's a Sorter involved
    Sorter sorter = jxTable.getColumnExt("ELEVATION").getSorter();
    sorter.setComparator(numberComparator);

Filtering Rows from Display

Bạn có thể loại bỏ một dòng từ  JXTable mà không cần sửa đổi mô hình bên dưới bằng cách sử dụng Filters. Cũng như  Highlighters, Filters cũng có thể được móc nối lại với nhau như  một pipeline, FilterPipeline, and are added to a table using setFilters(FilterPipeline pipeline).

Trong demo SampleJXTableDemo, chúng tôi sự dụng tính năng lọc để chí hiển thị những quốc gia có tên bắt đầu bằng ký tự A sử dụng một mẫu lọc trên dòng country.

    int col = jxTable.getColumn("COUNTRY").getModelIndex();
    jxTable.setFilters(new FilterPipeline(
        new Filter[] { new PatternFilter("A.*", 0, col) }));

Filters không thực sự loại bỏ dữ liệu từ TableModel; nó chỉ tạm ẩn chúng (hoặc trong trường hợp của Sorter, đó là nguyên nhân mà thứ tự các dòng xuật hiện khác với mô hình dữ liệu bên dưới). Gở bỏ PatternFilter, cho ví dụ này, sẽ làm cho các dòng đã ẩn trước đó được hiển thị lại.

(c) f2u

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: