All pastes #383751 Raw Edit

Stuff

public java v1 · immutable
·published 2007-03-06 16:16 UTC
rendered paste body
    private void buildTable() {        tableModel = new JTableModel(rows, columns, extras);        tableColumnModel = new WarpTableColumnModel(extras);        TableSorter sortedModel = new TableSorter(tableModel);        table = new JTable(sortedModel, tableColumnModel);        table.createDefaultColumnsFromModel();        sortedModel.setTableHeader(table.getTableHeader());        TableCellRenderer defaultRenderer = table.getDefaultRenderer(JButton.class);        table.setDefaultRenderer(JButton.class,                                 new JTableRenderer(defaultRenderer));        JTableButtonMouseListener mouse = new JTableButtonMouseListener(this,                table);        table.addMouseListener(mouse);        table.addMouseMotionListener(mouse);        table.setColumnSelectionAllowed(false);        table.setRowSelectionAllowed(false);        table.setEnabled(false);        limitColumnWidths();        scroll = new JScrollPane(table);        this.add(scroll, BorderLayout.CENTER);        validate();        if (scrollValue == -1) {            saveScrollValue();        } else {            restoreScrollValue();        }        validate();    }        public void limitColumnWidths() {        switch (tabelltype) {        case RESSURS:            limitWidthOfColumn(0);            limitWidthOfColumn(1);            limitWidthOfColumn(3);            limitWidthOfColumn(4);            limitWidthOfColumn(5);            limitWidthOfColumn(6);            limitWidthOfColumn(7);            break;        case BEHOV:            limitWidthOfColumn(0);            limitWidthOfColumn(1);            limitWidthOfColumn(3);            limitWidthOfColumn(4);            limitWidthOfColumn(5);            limitWidthOfColumn(6);            limitWidthOfColumn(7);            limitWidthOfColumn(8);            break;        case OBSERVASJON:            limitWidthOfColumn(0);            limitWidthOfColumn(2);            limitWidthOfColumn(3);            limitWidthOfColumn(4);            break;        case PERSON:            limitWidthOfColumn(0);            limitWidthOfColumn(1);            limitWidthOfColumn(2);            limitWidthOfColumn(3);            limitWidthOfColumn(4);            limitWidthOfColumn(5);            limitWidthOfColumn(6);            break;        }    }        private void limitWidthOfColumn(int columnNumber) {        FontMetrics tableFont = getFontMetrics(table.getFont());        FontMetrics headerFont = getFontMetrics(table.getTableHeader().getFont());        int minWidth = headerFont.stringWidth((String)columns.elementAt(columnNumber)) + 10;        int maxWidth = minWidth;        int widthFix = 10;        for (Object row : rows) {            String s = (String)((Vector)row).elementAt(columnNumber);            if (tableFont.stringWidth(s) + widthFix > maxWidth) {                maxWidth = tableFont.stringWidth(s) + widthFix;            }        }        TableColumn tc = table.getColumnModel().getColumn(columnNumber);        tc.setPreferredWidth(maxWidth);        tc.setMaxWidth(maxWidth);        tc.setMinWidth(minWidth);    }}class JTableRenderer implements TableCellRenderer {    private TableCellRenderer __defaultRenderer;    public JTableRenderer(TableCellRenderer renderer) {        __defaultRenderer = renderer;    }    public Component getTableCellRendererComponent(JTable table, Object value,            boolean isSelected,            boolean hasFocus,            int row, int column) {        if (value instanceof Component)            return (Component) value;        return __defaultRenderer.getTableCellRendererComponent(                table, value, isSelected, hasFocus, row, column);    }}class WarpTableColumnModel extends DefaultTableColumnModel {    int extras;    public WarpTableColumnModel(int extras) {        super();        this.extras = extras;    }        public TableColumn getColumn(int columnIndex) {        TableColumn tc = super.getColumn(columnIndex);        if (extras != WarpTable.NONE && columnIndex == getColumnCount()-1) {            switch (extras) {            case WarpTable.CHECKBOXES:                tc.setPreferredWidth(33);                tc.setMaxWidth(33);                tc.setMinWidth(33);                break;            default:                tc.setPreferredWidth(75);                tc.setMaxWidth(75);                tc.setMinWidth(75);            }        }        return tc;    }}