Java 如何使用JTable将JScrollPane设置为自动重新缩放内容
我想在我的程序中实现一种机制,当要在JScrollPane的视口中完全看到列时,该机制将自动重新缩放JScrollPane: 例如,我的JTable看起来像:Java 如何使用JTable将JScrollPane设置为自动重新缩放内容,java,swing,Java,Swing,我想在我的程序中实现一种机制,当要在JScrollPane的视口中完全看到列时,该机制将自动重新缩放JScrollPane: 例如,我的JTable看起来像: ___________ JScrollPanel _____________ | | | __________ JTable _______________|_ ___ | |________|______|______|__
___________ JScrollPanel _____________
| |
| __________ JTable _______________|_ ___
| |________|______|______|_____|____|_|___|
| | | | | | | | |
| |________|______|______|_____|____|_|___|
|______________________________________|
现在,如何设置自动重新缩放JscrollPanel到更宽的JTable
___________ JScrollPanel ______________________
| <------>|
| __________ JTable _________________ ___ |
| |________|______|______|_____|____|_|___| |
| | | | | | | | | |
| |________|______|______|_____|____|_|___| |
| <------->|
|______________________________________________|
\uuuuuuuuuuuuuujScrollPanel______________________
| |
|_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu124;
| |________|______|______|_____|____|_|___| |
| | | | | | | | | |
| |________|______|______|_____|____|_|___| |
| |
|______________________________________________|
有时我从JTableModel获取数据,但我不知道数据将在JTableheader中保存多长时间。实现了
可滚动
,因此您可以利用getPreferredScrollableViewportSize()返回的结果。默认实现可能并不理想,但您可以重写该方法以获得更好的匹配。这将返回表的getRowHeight()
的倍数。对于列宽,您可能希望尝试使用setAutoResizeMode()
(已讨论)提供的AUTO\u RESIZE.
设置。关键信息是您正在使用什么布局管理器,以及如何尝试调整组件和GUI的大小。最好尽可能不直接调整大小,而是让组件和智能布局管理器决定最佳大小。我使用javax.swing.GroupLayout它是Netbeans pallete中的标准布局。我试图不在JTable中设置宽度,而在JScrollPanel中设置大小。但是,当我从JTabelModel获得的数据填满我的JTable时,有时候JTable太长(包含数据)而变得更短,我会为您的GUI使用另一种布局。例如,在中间位置使用JPanel将JScrollPane添加到BorderLayout,并确保在显示GUI之前pack()
GUI。