powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JCheckBox расположение текста
13 сообщений из 13, страница 1 из 1
JCheckBox расположение текста
    #39035108
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, возникла проблема никак не могу найти решение. Использую JCheckBox для создание компонента на форме.
Код: java
1.
2.
3.
JCheckBox button = new JCheckBox();
button.setText("sadasdаываыва\ndasdasdasd");
button.setVerticalTextPosition(SwingConstants.TOP);



Проблема заключается, что сам чекбокс поднимается вверх и его нижняя граница, становиться на уровне нижней границы первой строки текста. Можно как-нить подвинуть текст относительно чекбокса или чекбокс относительно текста, чтобы сделать сдвиг на несколько пикселей по вертикали? Пробовал маржин и ищквук, но он воспринимает как компонент целиком
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035318
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно подвинуть всё что угодно, но решение будет проктальным. Можно доходчиво объяснить конечную цель? Может без смещения туда-сюда можно её достичь.
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035327
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется получить следующее, чтобы сам чекбокс выравнивался посередине первой строки текста или по чтобы верхнии границы чекбокса и текста совпадали, ну или хотябы чтобы это визуально так казалось. Просто если указать вертикальное выравнивание в топ, то чек бокс выравнивается по нижней границе первой строки, сам чекбокс больше шрифта текста, из-за этого выглядит не очень красиво.
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035337
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoksyХочется получить следующее, чтобы сам чекбокс выравнивался посередине первой строки текста или по чтобы верхнии границы чекбокса и текста совпадали, ну или хотябы чтобы это визуально так казалось. Просто если указать вертикальное выравнивание в топ, то чек бокс выравнивается по нижней границе первой строки, сам чекбокс больше шрифта текста, из-за этого выглядит не очень красиво.
Возможно у вас не верное понятие "красиво". Выравнивание чекбокса происходит по baseline текста. Так же и должно быть.

Если без сильных извращений, то рекомендую изучить код метода SwingUtilities.layoutCompoundLabelImpl(...) - будет видно как в зависимости от alignment, textPosition и размеров иконки происходит компоновка. Возможно этими свойствами получится то что вы хотите. Из текстового описания понять сложно.
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035343
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается как на левом скрине, а хочется добиться как на правом
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035351
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boksy, сделайте чекбокс отдельно, а текст положите через jLabel или как там она, короче, через второй компонент, лейбл.
И тогда, хоть как его регулируйте, кость справа хоть слева, выше, ниже и т.д.
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035352
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да так и было, но тогда текст не кликабельный
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035362
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boksy,

А по-моему вполне круто выравнивается. Возможно, поедет, на других шрифтах. Но по-умолчанию прилично - от baseline до верхней границы. Если опустить ниже, будет не так органично.
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035414
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поковырял исходники. Так как для многострочности используется HTML, подсунуть фейковый размер контрола не получается. Можно было бы через CSS выдумать чего-нибудь. Но Swing не понимает отрицательные margin и padding.

Единственное решение, которое приходит на ум это как-то обернуть Icon, чтобы выдавать размер на пару пикселей больше.


А какой LAF? Для Metal переопределить иконку оказалось очень просто. А вот для Synth/Nimbus надо повозиться.
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39035428
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
    
NimbusLookAndFeel laf = new NimbusLookAndFeel();
    UIManager.setLookAndFeel(laf);
    Icon icon = (Icon) laf.getDefaults().get("CheckBox.icon");
    laf.getDefaults().put("CheckBox.icon", new ShiftIcon(icon));


    private static class ShiftIcon implements Icon {
        private final Icon delegate;

        public ShiftIcon(Icon delegate) {
            this.delegate = delegate;
        }

        @Override
        public void paintIcon(Component c, Graphics g, int x, int y) {
            delegate.paintIcon(c, g, x, y + 2);
        }

        @Override
        public int getIconWidth() {
            return delegate.getIconWidth();
        }

        @Override
        public int getIconHeight() {
            return delegate.getIconHeight() + 2;
        }
    }
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39038188
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Спасибо Вам большое за помощь, все получилось, сам бы век разбирался, + узнал много интересного, спасибо еще раз
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39038199
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoksyСпасибо Вам большое за помощь, все получилось, сам бы век разбирался, + узнал много интересного, спасибо еще раз
Рано говорить "Спасибо". Приведенная настройка глобальная и повлияет на внешний вид однострочных чекбоксов. Возможно, придется, искать способ установки иконки для отдельного экземпляра.
...
Рейтинг: 0 / 0
JCheckBox расположение текста
    #39043431
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нее воспользовавшись Вашей идеей, можно переопределить чекбокс по умолчанию, и конкретному чекбоксу(компоненту) сказать чтобы использовал новый, у меня все получилось, работает как хотел
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JCheckBox расположение текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]