根据内容长度调整单元格的jtable宽度(在jscrollpane内)

时间:2018-01-08 01:14:57

标签: resize jtable row jscrollpane

我遇到了有关根据内容最长的单元格调整列大小的问题。在下面的示例中,我希望根据" 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);

}

1 个答案:

答案 0 :(得分:0)

如果你使你的JFrame成为BorderLayout并且你的JScrollPane BorderLayout.CENTER根本不需要设置JSrollPane的大小它将占用所有可用空间

如果你的JScrollPane在GridLayout的单元格内没有问题,它也不会重新调整,不需要设置它的大小

总是更容易将JScrollPane放在JPanel(GridLayout(1,1)或BorderLayout.CENTER)中,让布局管理器在JPanel上进行调整。

或者你可以使用

table.setFillsViewportHeight( true );
相关问题