Как заставить JCheckBox изменить размер, чтобы предотвратить щелчок пустого места? - PullRequest
1 голос
/ 12 июня 2010

Когда я создаю JCheckBox в своем приложении Swing, я оставляю некоторое дополнительное пространство после его метки, поэтому, если метка JCheckBox имеет ширину, например, 100 пикселей, я делаю JCheckBox 120 пикселей для безопасности.

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

http://imgur.com/3eMUG.png

Интересноесли есть способ изменить размер JCheckBox во время выполнения, чтобы он точно соответствовал тексту внутри него, в зависимости от используемого типа шрифта / размера?

Это кажется немного причудливым, но мне нравится, чтобы все выгляделоperfect:)

Редактировать - Подробнее:

Я использую FormLayout, и я определяю JCheckBox следующим образом:

CellConstraints con = new CellConstraints();
contentPane.add(checkBox1, con.xywh(3, 13, 10, 1));

Ответы [ 3 ]

1 голос
/ 13 июня 2010

@ trashgod правильно.Если вы хотите, чтобы отступы, выравнивание или интервал соответствовали эстетическим целям, вам следует использовать диспетчеры компоновки, чтобы добиться этого, а не связываться с самими компонентами.Практически любой макет, который вы хотите достичь, может быть сделан таким образом.Вам может нужно использовать GridBagLayout, что может быть больно, но оно наиболее гибкое.

1 голос
/ 12 июня 2010

для точного размещения текста внутри, в зависимости от типа / размера шрифта

Это предпочтительный размер по умолчанию JCheckBox; просто не меняй это.

0 голосов
/ 14 июня 2010

Хорошо ... Спасибо всем за ваши ответы.Я нашел подходящее решение при использовании FormLayout:

contentPane.add(checkBox1, con.xywh(3, 13, 10, 1, CellConstraints.LEFT, CellConstraints.DEFAULT));
...