2015-11-16 8 views
0

Существует конкретный сценарий, с которым я столкнулся с JXTable (возможно, даже с его проблемой JTable) относительно того, что происходит после выполнения вызова «Pack All Columns».Предотвращение автоматической регулировки ширины столбцов JXTable

«Pack All Columns» работает нормально, но когда я вручную уменьшаю ширину столбца, то при следующем полученном TableModelEvent ширина столбца, которую я модифицировал, всегда делается LARGER. Я замечаю, что в конечном итоге вызывается частный setWidthsFromPreferredWidths() JTable, который выглядит как преступник.

Опять же, эта проблема возникает только после того, как я выбрал 'Pack All Columns'. Является ли это известной ошибкой или это предполагаемое поведение «Pack All Columns»?

ответ

0

Я на самом деле нашел ответ на мой вопрос в http://www.coderanch.com/

Она включала переопределение columnMarginChanged (ChangeEvent) метод для обеспечения GetWidth() и getPreferredWidth() колонки были синхронизированы:

@Override 
public void columnMarginChanged(final ChangeEvent e) 
{ 
    super.columnMarginChanged(e); 

    if (isEditing()) 
    { 
     removeEditor(); 
    } 
    TableColumn resizingColumn = null; 
    if (tableHeader != null) 
    { 
     resizingColumn = tableHeader.getResizingColumn(); 
    } 
    if (resizingColumn != null) 
    { 
     if (autoResizeMode == AUTO_RESIZE_OFF) 
     { 
      resizingColumn.setPreferredWidth(resizingColumn.getWidth()); 
     } 
     else 
     { 
      SwingUtilities.invokeLater(new Runnable() 
      { 

       @Override 
       public void run() 
       { 
        doLayout(); 
        repaint(); 
       } 
      }); 
     } 
    } 
    else 
    { 
     resizeAndRepaint(); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^