Re: Horizontally scrollin
To: comp.lang.java.gui
On Mar 29, 8:46 pm, RedGrittyBrick <redgrittybr...@spamweary.foo>
wrote:
Andrew Thompson wrote:
On Mar 28, 11:27 pm, RedGrittyBrick <redgrittybr...@spamweary.foo>
wrote: ..
Thanks, that is perfect in all but one respect ... Unfortunately
the table headings no longer show.
I am beginning to think this is a bug, and have started trawling
through the bug D/B looking for similar problems.
Here is a likely looking one, though Sun
marked it 'Closed, not a bug' (shrugs). *
<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4194022>
Thanks, I've no experience of the Java bug database
Start here..
<http://bugs.sun.com/bugdatabase/index.jsp>
If you think it may be a bug
Unfortunately, Sun doesn't. ;-)
..then I can think about stopping tearing my
hair out and worrying about what I am doing wrong.
* OTOH, using a slight variant of the advice
on that page, I came up with this (very
hackish looking) code that seems to behave
as we might expect..
<sscce>
import java.awt.*;
import javax.swing.*;
import javax.swing.table.TableColumn;
public class HorizScrollTable extends JPanel {
HorizScrollTable() {
setLayout(new BorderLayout());
JTable table = new JTable(data, headings){
Component parent;
public boolean getScrollableTracksViewportWidth(){
return isThinnerThanParent();
}
boolean isThinnerThanParent() {
if (parent==null) {
parent = getParent();
}
Dimension d1 = getSize();
Dimension d2 = parent.getSize();
return (d1.width<=d2.width);
}
};
table.setAutoResizeMode(
JTable.AUTO_RESIZE_ALL_COLUMNS);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.CENTER);
}
String[] headings = new String[] { "Product Category", "Product",
"Supplier", "Region", "Year", "Period", "Sales" };
int[] widths = { 80, 100, 200, 120, 40, 80, 60 };
Object[][] data = {
{ "Apples", "Granny Smith",
"The Freemantle apple collective",
"Northeast", 2007, "Quarter 2", 156.67 },
{ "Apples", "Granny Smith",
"The Freemantle apple collective",
"South", 2007, "Quarter 2", 1766.01 },
{ "Pears", "Concord", "John Williams and Sons",
"Northeast",
2007, "Quarter 2", 987.29 },
{ "Pears", "Conference", "Montpelier et fils",
"South", 2007,
"Quarter 2", 1221.16 } };
private static void createAndShowGUI() {
JFrame frame = new JFrame("Horizontally scrollable JTable");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new HorizScrollTable();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setSize(300,300);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
</sscce>
Does that work for you?
Andrew T.
---
* 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