Java examples for Swing:JTable Column
layout JTable Columns
/*//from ww w . j a va 2 s .c o m * Copyright 2015 Matthew Aguirre * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //package com.java2s; import java.awt.Component; import java.awt.Dimension; import java.awt.Point; import javax.swing.JTable; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; public class Main { public static void layoutColumns(JTable p_Table, boolean p_OnlyVisibleRows) { int column = 0; TableColumn c; int firstRow = p_OnlyVisibleRows ? getFirstVisibleRow(p_Table) : 0; int lastRow = p_OnlyVisibleRows ? getLastVisibleRow(p_Table) : (p_Table.getModel().getRowCount() - 1); Dimension intercellSpacing = p_Table.getIntercellSpacing(); JTableHeader tableHeader = p_Table.getTableHeader(); for (java.util.Enumeration columns = tableHeader.getColumnModel() .getColumns(); columns.hasMoreElements(); column++) { c = (TableColumn) columns.nextElement(); Component component = (c.getHeaderRenderer() != null) ? c .getHeaderRenderer().getTableCellRendererComponent( p_Table, c.getHeaderValue(), false, false, -1, column) : tableHeader.getDefaultRenderer() .getTableCellRendererComponent(p_Table, c.getHeaderValue(), false, false, -1, column); int width = Math.max(c.getWidth(), component.getPreferredSize().width); if (firstRow >= 0) { for (int i = firstRow, d = lastRow; i <= d; i++) { width = Math.max( width, p_Table.getCellRenderer(i, column) .getTableCellRendererComponent( p_Table, p_Table.getModel().getValueAt( i, column), false, false, i, column) .getPreferredSize().width + intercellSpacing.width); } } c.setPreferredWidth(width); c.setWidth(width); } } public static int getFirstVisibleRow(JTable p_Table) { Point p = p_Table.getVisibleRect().getLocation(); return p_Table.rowAtPoint(p); } public static int getLastVisibleRow(JTable p_Table) { Point p = p_Table.getVisibleRect().getLocation(); p.y = p.y + p_Table.getVisibleRect().height - 1; int result = p_Table.rowAtPoint(p); if (result > 0) { return result; } // if there is no rows at this point,rowatpoint() return -1, // It means that there is not enough rows to fill the rectangle where // the table is displayed. // if this case we return getRowCount()-1 because // we are sure that the last row is visible if (p_Table.getVisibleRect().height > 0) { return p_Table.getRowCount() - 1; } else { return -1; } } }