Я добавил изображение в строку JTable, упомянутую в http://www.java2s.com/Code/Java/Swing-JFC/RenderinganimageinaJTablecolumn.htm. Но теперь я хочу добавить MouseListener к этому конкретному изображению. Как добиться того же
Добавление прослушивателя к изображению в JTable Row
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
Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..