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



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

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

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

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


А какой LAF? Для Metal переопределить иконку оказалось очень просто. А вот для Synth/Nimbus надо повозиться.
...
Рейтинг: 0 / 0
25.08.2015, 11:43
    #39035428
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox расположение текста
Код: 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
28.08.2015, 10:54
    #39038188
Boksy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JCheckBox расположение текста
Blazkowicz,

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


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