У меня есть JTable в моем приложении. У меня есть настраиваемая настройка рендерера в таблице (JTextArea, с включенным переносом строк), которая позволяет многострочное содержимое. Предполагается, что в некоторых случаях содержимое ячеек JTable выходит за границы ячейки. Я хочу сделать следующее:
Вместо того чтобы заставлять пользователя перетаскивать границу строки для изменения размера ячейки, я хочу, чтобы пользователь мог дважды щелкнуть границу строки, поэтому при обнаружении этого я могу автоматически изменять высоту ячейки (высоту строка), чтобы показать все содержимое ячейки.
Мой вопрос: как лучше всего обнаружить двойной щелчок на границе строки? Я заставил это работать, настроив MouseListener на JTable с помощью метода mouseClicked, который выглядит следующим образом:
public class MouseButtonInputListener extends MouseInputAdapter
{
private JTable fTable;
public MouseButtonInputListener(JTable parentTable)
{
fTable = parentTable;
}
@Override
public void mouseClicked(MouseEvent e)
{
// Some pre-processing here...
if(e.getClickCount() == 2 &&
fTable.getCursor().getType() == Cursor.N_RESIZE_CURSOR)
{
// Auto-adjust row height to fit contents...
}
}
}
Хотя это работает, я не очень доволен строкой:
fTable.getCursor().getType() == Cursor.N_RESIZE_CURSOR
Любые предложения о лучшем способе сделать это? Надежный ли это подход на всех платформах?