Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JTable将JScrollPane设置为自动重新缩放内容_Java_Swing - Fatal编程技术网

Java 如何使用JTable将JScrollPane设置为自动重新缩放内容

Java 如何使用JTable将JScrollPane设置为自动重新缩放内容,java,swing,Java,Swing,我想在我的程序中实现一种机制,当要在JScrollPane的视口中完全看到列时,该机制将自动重新缩放JScrollPane: 例如,我的JTable看起来像: ___________ JScrollPanel _____________ | | | __________ JTable _______________|_ ___ | |________|______|______|__

我想在我的程序中实现一种机制,当要在JScrollPane的视口中完全看到列时,该机制将自动重新缩放JScrollPane:

例如,我的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。