Re: Horizontally scrolling JTable
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>
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..
<snip SSCCE head>
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);
}
<snip SSCCE tail>
Does that work for you?
Thanks Andrew, yes that works the way I wanted.
Before I read your latest posting I'd also been hunting in the bugs
database as you suggested ...
Searching Sun's Bug database led me (eventually) to Bug 4127936 reported
10-APR-1998 and marked "In progress, bug", "Evaluation: ... needs to be
fixed before FCS with JDK1.2." :-o
There are several suggested workarounds in the commentary. For future
readers of this thread: apart the workaround which Andrew found (see
above), another workaround that I tried was ...
....
scrollPane.addComponentListener(new
CorrectStrangeBehaviourListener(table, scrollPane));
....
/**
*
* @author dbeutner 16-MAY-2002
* See Sun Java bug report 4127936.
* Amended 29/3/2007 by RedGrittyBrick to add
* constructor with parameters
*
*/
private class CorrectStrangeBehaviourListener
extends ComponentAdapter {
private JTable table;
private JScrollPane scrollPane;
CorrectStrangeBehaviourListener(JTable table,
JScrollPane scrollPane) {
this.table = table;
this.scrollPane = scrollPane;
}
public void componentResized(ComponentEvent e) {
if (table.getPreferredSize().width
<= scrollPane.getViewport()
.getExtentSize().width) {
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
} else {
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
}
The one Andrew found is shorter but since I have several tables it may
be worth me putting the bulk of the workaround code into a separate
class as the above example does.
Thanks again Andrew.
--
[m[1m?@[;32;40m?z?w?x?z?z?w?z?w???w?s?z?w???x?@?z?w [1;37mtelnet://imaple.tw [31m?[;30;41m?[m
[1m?@[32m?u?w?x?x?u?w?u?s?? ?x?u?w?x?x ?u?w[37m?@ [32mIAS_EverTale [37m?@[31m?[;30;41m?[m
[1m?z[42m?|?w[;30;42m?[1;37m|???|?w?x?? ?x?x?@???|?w?|?w?[;30;42mG[1;37m?@?[;30;42m?[1;37m?@?[;30;42m?[1;37m?@?[;30;42ms[1;37m?@?[;30;42mO[1;37;40m?{[;30;41m?[1;31;40m?[;30;40mNAYURI[m
[1m???????????????????????????????????????????????????????? [;30;41m?[1;31;40m?[m
[;32m?? From: totentanz?q223.139.246.111 [m
[;36mtotentanz ?? 2011/11/18 Fri 22:45:49 ?q 223-139-246-111.dynamic.hinet.net ????[m