SWING JTable: Как сделать каждый ряд таким же высоким, как и его самый высокий объект? - PullRequest
1 голос
/ 29 декабря 2010

У меня есть таблица, где некоторые объекты отображаются и имеют фиксированный размер (список атрибутов). Я хочу, чтобы каждый ряд был таким же высоким, как и самый высокий объект, и мне было интересно сделать это. Я думал о том, чтобы сделать что-то подобное (см. Ниже), но я уверен, что есть что-то лучше ..

public Component getTableCellRendererComponent(JTable table, Object value,
                                                 boolean isSelected,
                                                 boolean hasFocus, int row,
                                                 int column)
  {
      /*....*/

      this.setListData((Object[])value);
      int height = new Double(getPreferredSize().getHeight()).intValue();
      if (table.getRowHeight(row) < height)
          table.setRowHeight(row, height);    
      /*....*/

      return this;
  }

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

В рендере не должно быть такого кода. Вместо этого, когда вы загружаете данные в модель, выполните что-то вроде:

private void updateRowHeights()
{
    try
    {
        for (int row = 0; row < table.getRowCount(); row++)
        {
            int rowHeight = table.getRowHeight();

            for (int column = 0; column < table.getColumnCount(); column++)
            {
                Component comp = table.prepareRenderer(table.getCellRenderer(row, column), row, column);
                rowHeight = Math.max(rowHeight, comp.getPreferredSize().height);
            }

            table.setRowHeight(row, rowHeight);
        }
    }
    catch(ClassCastException e) {}
}
0 голосов
/ 29 декабря 2010

Я бы придерживался решения, которое у вас есть. Я не думаю, что есть более простой способ сделать это. Независимо от того, что вы собираетесь проверять высоту каждой ячейки, вы можете сделать это так же, как вы визуализируете каждую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...