Re: Setting table row hei
To: comp.lang.java.gui
Andrew Thompson wrote:
noah.drach@gmail.com wrote:
I have a table that all it's cells are rendered, I want to set the row
height accoding the height of the tallest component.
and I also want the component height to be set automatically after I
set it's width to the column width.
Change the '.' to a comma in line 243 of the source,
that should sort the problem. In case it does not,
you might also..
any ideas?
Show us an SSCCE* that fails to correctly size the
column headers.
<http://www.physci.org/codes/sscce>
Andrew T.
Here, notice that the end of a string is marked "end of text"
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextPane;
import javax.swing.table.AbstractTableModel;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
public class TableDemo extends JPanel {
public TableDemo() {
super(new GridLayout(1,0));
JTable table = new JTable(new MyTableModel());
// Set renderers
TableColumn col = table.getColumnModel().getColumn(0);
col.setCellRenderer(new MyRenderer());
col = table.getColumnModel().getColumn(1);
col.setCellRenderer(new MyRenderer());
col = table.getColumnModel().getColumn(2);
col.setCellRenderer(new MyRenderer());
table.setPreferredScrollableViewportSize(new Dimension(500,
70));
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
//Add the scroll pane to this panel.
add(scrollPane);
}
class MyRenderer extends DefaultTableCellRenderer {
private JTextPane component = new JTextPane();
public MyRenderer() {
component.setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean
isSelected,
boolean
hasFocus,
int row, int
column) {
super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
component.setText((String)value);
// Set the size
TableColumnModel columnModel = table.getColumnModel();
component.setMinimumSize(new
Dimension(columnModel.getColumn(column).getWidth(),
(int)component.getPreferredSize().getHeight()));
component.setMaximumSize(new
Dimension(columnModel.getColumn(column).getWidth(),
(int)component.getPreferredSize().getHeight()));
if (component.getPreferredSize().getHeight() >
table.getRowHeight(row)){
table.setRowHeight(row,
(int)component.getPreferredSize().getHeight());
}
return component;
}
}
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
private Object[][] data = {
{"Mary\nMary end of text", "Campione blahblahblah
blahblahblahblah blahblahblahblahblah blahblahblahblahblah end of
text",
"Snowboarding\nSnowboarding\nend of text", new Integer(5),
new Boolean(false)},
{"Mary end of text", "Campione blahblahblah
blahblahblahblah blahblahblahblahblah blahblahblahblahblah
blahblahblahblahblah blahblahblahblahblah blahblahblahblahblah
blahblahblahblahblah blahblahblahblahblah blahblahblahblahblah
blahblahblahblahblah blahblahblahblahblah blahblahblahblahblah
blahblahblahblahblah end of text",
"Snowboarding\nSnowboarding\nSnowboarding\nSnowboarding\nSnowboarding\nSnowboarding\nSnowboarding\nend
of text", new Integer(5), new Boolean(false)}};
public Object getValueAt(int row, int col) {
return data[row][col];
}
public int getRowCount() {
return 2;
}
public int getColumnCount() {
return 5;
}
}
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("TableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
TableDemo newContentPane = new TableDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24