Hi, Did anyone manage to dynamically size a JTable and at the same time allows a horizontal scrollbar to appear when the gui window's size is reduced. I managed to size the table dynamically by following this post, but whenever i reduce the size of the gui window, the columns get squeezed together, making the fields impossible to read. I would like to have a horizontal scrollbar so that when the window size is reduced, the values can be read using the scrollbar. The only way i know to make the horizontal scrollbar appear is to set table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF) but for dynamic resizing, i need to have table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN) at the end of the setupTable() method. They seem to contradict one another. So is it impossible to have both scrollbar and dynamic re-sizing? Another disadvantage of table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF) is when you maximize the gui window, the table does not fill the whole window, leaving some undesirable gray section at the right hand side. Anyone who had managed, please give some hints. thanks, derek [ January 16, 2004: Message edited by: Derek Canaan ] [ January 16, 2004: Message edited by: Derek Canaan ]
Hi, "Did anyone manage to dynamically size a JTable and at the same time allows a horizontal scrollbar to appear when the gui window's size is reduced." When I first started out on this project, I began by writing a file verifier to familiarize myself with the file i/o. I then wrote up the first draft of my user interface in swing. It's been quite a while since I've even looked at my user interface, as this project has turned out to involve steep learning curves for me in topics I knew little about. This morning I ran my application's alone client: java -jar runme.jar alone and, my JTable appears to do what you want, although, the JTable has no data in it beyond the header information (name, address, zip, et cetera). The JTable has no data, beyond header columns, and yet the JTable has space used in the body (maybe I placed blanks in there so that the JTable would not have zero rows?). When I have more rows than can fit in the space the layout manager allows, a vertical scroll bar will appear for the JTable. When I width gets to small, horizontal scroll bars appear. Never is the column width unreasonably and surprisingly too small. So, when my window is small, there are vertical and horizontal scrollbars, and the columns do not scrunch together, but remain reasonably far apart. And, when I expand the window to fill the complete screen (1024 x 768), the columns even become wider. In general, I do not attempt to resize individual columns, I am using the tools and techniques a beginner would use, and my JTable appears to work quite fine; perhaps I got lucky. Perhaps I referenced the lucky book, or perhaps I just took the elementary advice offered at Sun in their swing tutorial. What I think I did, and I have not referred to the code explicitly just now, is that within my GUI, the JTable is in the center of a JPanel border layout; and, this JPanel is within that gizmo which creates your scroll bars, JScrollBar... or some such. And, JScrollBar is probably within the center of the master panel for the window's border layout. Anyway, without having looked at my code, that's probably how I did it. I kept everything simple, and, of course, I wanted the JTable to always expand to take maximum width, without the columns getting scrunched together. When the window is very small, the JScrollBar... gizmo must be smart enough to say, "okay, let's not scrunch up these columns, let's introduce scroll bars now." I'm sorry that I have not coded up a solution, and I'm sorry that I have not taken the time to review my coding solution, but I suspect that as I have outlined it above is probably, in general, how I went about it. I also seem to remember things not working correctly the first time, so I had to iterate a few times before I lucked out and got my JTable to behave in a reasonable fashion. Thanks, Javini Javono
posted 16 years ago
Hi Javini, Thanks for your input.
my JTable appears to work quite fine
Can your columns fit in all its field values when you reduce the window frame size? What if one column contains a very long field value? Do you have to manually 'lengthen' its columns to see what is inside? The idea of dynamic re-sizing is to have the program automatically re-sizes the columns whatever their max field length is so that the user do not have to 'lengthen' or open-up the column to see the entire value when the field value is long. The idea of horizontal scrollbar is to help view when the sum of the column lengths is greater than the window frame width. If JTable.AUTO_RESIZE_OFF is used, what about the empty spaces when the sum of the column lengths is lesser than the window frame width - not very nice. Actually, i have found a way (using a listener) but not sure if it's the most efficient or necessary rgds, derek
Why fit in when you were born to stand out? - Seuss. Tiny ad: