Ответы пользователя по тегу Java
  • Почему чтение blob-а из hsqldb вызывает ошибку java.lang.IndexOutOfBoundsException?

    @nikolaas Автор вопроса
    Вопрос закрыт. Проблема была в строке Tools.closeSilent(is); метода
    public void write(TypeHandlerContext context, ResultSet resultSet, Object value)
    , которая закрывала InputStream до вызова resultSet.updateRow. Видимо на oracle и postgresql при вызове
    resultSet.updateBlob(int columnIndex, InputStream inputStream, long length) throws SQLException
    происходит копирование данных из переданного потока, а в hsqldb сохраняется ссылка на него.
    Ответ написан
    Комментировать
  • Как сделать подгрузку изображений к списку?

    По хорошему, с точки зрения архитектуры, вам не нужно прокидывать комбобокс в TransformingCanvas, потому что его задача заключается в отрисовке изображений. Но откуда изображения берутся это уже второй вопрос. Я бы ввел какой нибудь интерфейс, например:
    public interface ImageProvider {
        Image getImage();
    }


    В TransformingCanvas завел бы поле ImageProvider и сеттер для него. При нажатии на кнопку вы устанавливаете через сеттер соответствующую реализацию ImageProvider
    При отрисовке TransformingCanvas должен брать изображение из ImageProvider. Остается один вопрос: как оповестить TransformingCanvas об изменении изображения и о необходимости перерисовки? Способов решения много. Самый простой: в сеттере для ImageProvider явно вызывать перерисовку TransformingCanvas. Можно также через слушателя, регистрируемого в ImageProvider.

    p.s. И еще. Я не знаю конечно специфики вашего TransformingCanvas, но в общем случае лучше переопределять не метод JComponent.paint(Graphics g), а JComponent.paintComponent(Graphics g) Метод paint определяет весь алгоритм рисования компонента, включая его границу и его дочерние компоненты, в то время как paintComponent рисует только сам компонент. Переопределив paint, вам придется самому заморачиваться с рисованием дочерних компонентов, если конечно это потребуется. Почитайте документацию в этим методам, там все описано.
    Ответ написан
    1 комментарий