Java Source - JTable Row header.


The following code will add row header to JTable.
Tạo tiêu đề số cho các dòng dữ liệu của bảng JTable.





Mã nguồn - Source Code

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;

class RowHeaderRenderer extends JLabel implements ListCellRenderer {
//customize row header.
    RowHeaderRenderer(JTable table) {
        JTableHeader header = table.getTableHeader();
        setOpaque(true);
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));
        setHorizontalAlignment(CENTER);
        setForeground(header.getForeground());
        setBackground(header.getBackground());
        setFont(header.getFont());
    }

    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {
        setText((value == null) ? "" : value.toString());
        return this;
    }
}

public class RowHeader extends JList {

    public RowHeader(String[] headers, JTable table) {
        super(headers);

        setFixedCellWidth(50);
        setFixedCellHeight(table.getRowHeight());
        setCellRenderer(new RowHeaderRenderer(table));
    }

//Row header example
    public static void main(String[] args) {
        JFrame frame = new JFrame("Row Header Example");
        frame.setSize(300, 150);

        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

//create a table
        String headers[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
        DefaultTableModel dm = new DefaultTableModel(headers.length, 9);
        JTable table = new JTable(dm);

//table header
        RowHeader rowHeader = new RowHeader(headers, table);
        JScrollPane scroll = new JScrollPane(table);
        scroll.setRowHeaderView(rowHeader);

        frame.getContentPane().add(scroll, BorderLayout.CENTER);
        frame.setVisible(true);
    }
}


Kết quả - Result




Source: kidslovepc




No comments:

Post a Comment