Nano Hash - криптовалюты, майнинг, программирование

Добавление прослушивателя к изображению в JTable Row

Я добавил изображение в строку JTable, упомянутую в http://www.java2s.com/Code/Java/Swing-JFC/RenderinganimageinaJTablecolumn.htm. Но теперь я хочу добавить MouseListener к этому конкретному изображению. Как добиться того же

14.11.2011

Ответы:


1

не поддерживается напрямую, даже на автономном JLabel. Итак, есть две проблемы, которые нужно решить

  • получить область значка на этикетке
  • получить регион компонента рендеринга в таблице

Во-первых, вы можете изменить макет метки, чтобы получить прямоугольник, содержащий значок (это то, что BasicLabelUI выполняет внутренние действия):

protected String layoutCL(
    JLabel label,                  
    FontMetrics fontMetrics, 
    String text, 
    Icon icon, 
    Rectangle viewR, 
    Rectangle iconR, 
    Rectangle textR)
{
    return SwingUtilities.layoutCompoundLabel(
        (JComponent) label,
        fontMetrics,
        text,
        icon,
        label.getVerticalAlignment(),
        label.getHorizontalAlignment(),
        label.getVerticalTextPosition(),
        label.getHorizontalTextPosition(),
        viewR,
        iconR,
        textR,
        label.getIconTextGap());
}

во-вторых, запросите у таблицы прямоугольник ячейки в положении мыши и проверьте, будет ли нажата иконка, предполагая, что метка будет добавлена ​​(и заполнена) ячейкой

int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
Rectangle cellRect = table.getCellRect(row, column, false);
JLabel label = (JLabel) table.prepareRenderer(table.getRenderer(row, column), row, column);
Rectangle viewR = new Rectangle(0, 0, cellRect.width, cellRect.height);
Rectangle iconR = new Rectangle();
Rectangle textR = new Rectangle();
// call method above and do some math to translate the mouseEvent relative to the cell
14.11.2011
  • +1 Этот связанный пример перехватывает вызов проверить геометрию. 14.11.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..