Сначала я начну с того, что хочу, и оттуда:
+------------------------------------------+
|[] jCheckBox jLabel |
+------------------------------------------+
В принципе, я хотел бы иметь JCheckBox
с двумя сегментами текста, 1 выровненными по левому краю и 1 выровненными по правому краю. Я хотел бы, чтобы весь ящик был доступен для кликабельности и действовал точно так же, как JCheckBox
(Так как, если я нажимаю на мышь, он выделяет поле ect.).
Теперь я пробовал:
-
Использование HTML внутри текстового поля со следующей таблицей:
<html><table width=100%><tr width=100%><td>Left Text</td><td align=right>Right Text</td></tr></table>
. Это создает[] Left TextRightText
без какого-либо визуального выравнивания. -
Добавление как панели
JCheckBox
, так иJLabel
, однако это потребует от меня реализовать все события мыши и вызвать соответствующие соответствующие методы вJCheckBox
. Я отложил это в сторону - однако я готов пересмотреть, если это единственный вариант -
Добавление JLabel в JCheckBox
- Во-первых, это заставило JCheckBox принять решение об изменении шрифта, поэтому его нужно было "скорректировать"
- Во-вторых, базовые линии отключены на 1 или 2 пикселя. Это было исправлено путем реализации LayoutManager, который поместил
JLabel
в базовую линию. - В-третьих,
JLabel
перекрывается с текстомJCheckBox
, поэтому я должен настроить мой менеджер макета, однакоJCheckBox
не дал правильный результат изgetPreferedSize()
(из[1,1]
).
Итак, в основном мой вопрос: как мне это реализовать?