我遇到了有关根据内容最长的单元格调整列大小的问题。在下面的示例中,我希望根据" ADDRESS"中的内容长度重新调整所有单元格的宽度。柱。请帮助,并提前感谢您。
public void setPnLTable(int x, int y){
String[] ColNames = {"Name", "AGE", "ADDRESS"};
private String [][] getData(){t[0][0] = "John Smith"; t[0][1] = "55"; t[0][2] = "1600 Pennsylvania Ave NW, Washington, DC 20500";
DefaultTableModel tm = new DefaultTableModel(getData(),ColNames);
//
jPnLTABLE = new JTable(tm);
// Center Columns
cr.setHorizontalAlignment( JLabel.CENTER );
for (int i = 0; i < ColNames.length; i++){
jPnLTABLE.getColumnModel().getColumn(i).setCellRenderer(cr);
}
jPnLTABLE.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
JScrollPane js = new JScrollPane(jPnLTABLE);
//
js.setBounds(x, y, 2000, 500); // IT'S HARD-CODED;
//CAN I RESIZE IT BASED ON THE LENGTH OF THE CELL CONTENT
jPnLTABLE.getTableHeader().setReorderingAllowed(false);
jPnLTABLE.getTableHeader().setFont(new Font(null, Font.BOLD, 12));
add(js);
}
答案 0 :(得分:0)
如果你使你的JFrame成为BorderLayout并且你的JScrollPane BorderLayout.CENTER根本不需要设置JSrollPane的大小它将占用所有可用空间
如果你的JScrollPane在GridLayout的单元格内没有问题,它也不会重新调整,不需要设置它的大小
总是更容易将JScrollPane放在JPanel(GridLayout(1,1)或BorderLayout.CENTER)中,让布局管理器在JPanel上进行调整。
或者你可以使用
table.setFillsViewportHeight( true );