是否可以从Internet Download Manager创建如下所示的JTable
?
如您所见,它显示图片中的最后一列是添加的日期,右侧的列就像一个空列,右侧的行网格不是行,而它的列不属于由于所选行而带有标题的实际列在Data Added
列结束,当我尝试table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
时,我得到了此结果。
所以现在我希望表格填充第一张图片中的空白区域,当表格的列达到最大宽度时,仍然会创建一个水平滚动条。
编辑: Marco13说 - "您考虑过添加一个空栏吗?"
是的,看看这个
空列是所有列的一部分,底部有一个水平滚动条,因为它在框架上展开,我想做的是......
答案 0 :(得分:1)
您需要在下面的代码中使用垂直和水平滚动条:
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane .HORIZONTAL_SCROLLBAR_AS_NEEDED);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
在JFrame
调整大小时调整表格大小。您需要覆盖getScrollableTracksViewportWidth()。
完整代码:
import java.awt.CardLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
public class TableExample {
JFrame frame;
JTable table;
JScrollPane scrollPane;
public TableExample(){
initComp();
}
public void initComp(){
frame = new JFrame();
frame.setSize(500, 400);
frame.setLayout(new CardLayout());
table = new JTable(100, 5){
public boolean getScrollableTracksViewportWidth(){
return getPreferredSize().width < getParent().getWidth();
}
};
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//table.setFillsViewportHeight(true);
//table.setPreferredScrollableViewportSize(new Dimension(300, 200));
scrollPane = new JScrollPane(table);
scrollPane.setOpaque(true);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane .HORIZONTAL_SCROLLBAR_AS_NEEDED);
frame.add(scrollPane);
//-----this part from doc
TableColumn column = null;
for (int i = 0; i < 5; i++) {
column = table.getColumnModel().getColumn(i);
if (i == 4) {
column.setPreferredWidth(200); //third column is bigger
} else {
column.setPreferredWidth(100);
}
}
//----
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new TableExample();
}
}
输出:
您可以从How to make JTable both AutoResize and horizontall scrollable?获得一些想法,this question @camickr answer也可以提供帮助。
最后,如果您想将列大小调整为其内容宽度(值的长度),则需要使用Table Column Adjuster