fronteira JRadioButton / preenchimento / inserções / margem ... o que você chamá-lo
-
16-09-2019 - |
Pergunta
No meu aplicativo Java Eu estou tentando criar uma forma muito simples com um rótulo e um conjunto de controles em cada linha do formulário. Imagine algo como este diagrama ASCII bruto:
Result 1: (*) pass ( ) fail Result 2: ( ) pass (*) fail Error Count: [10______] Explanation: [Operator overload___]
Irritantemente os JRadioButton
s não se alinham com o resto dos controles como eles têm uma grande quantidade de preenchimento todo, empurrando-os para a direita um par de pixels e adicionar um monte de espaço entre as linhas. Eu acabar com algo parecido com isto:
Result 1: (*) pass ( ) fail Result 2: ( ) pass (*) fail Error Count: [10______] Explanation: [Operator overload___]
Como posso obter os botões de rádio para parar de ter tanto espaço vazio para que eles possam se alinham bem com tudo o resto? Se é importante isso é usando o GTK L & F; Eu não tentei executar o programa no Windows.
Solução
Parece que existem dois culpados:
-
O mini-
JPanel
contendo os dois botões de rádio tem umFlowLayout
cujo padrão é a adição de 5 pixels de preenchimento em torno de cada componente. -
Fazendo
radioButton.setBorder(null)
elimina o valor do outro pixel de espaço ao redor dos botões. Ele também estraga a linha pontilhada desenhado em torno deles quando eles têm foco, apesar de tudo.
Outras dicas
Use um GridBagLayout, e certifique-se de células âncora (cada etiqueta e caixa teria seu próprio celular) para a esquerda ou para com o direito, conforme necessário. Os rótulos seria justificado direita, as caixas de seleção seria justificado à esquerda.
Uma vez que a personalização GridBagLayouts à mão é um aborrecimento, eu recomendo usar o NetBeans GUI Builder e ajustá-los usando sua gráfica "personaliza" ferramenta.
Outra solução pode ser a margem de mudança (método setMargin das radionbuttons). Isso deve fazer o trabalho. A única desvantagem é que as margens / inserções será diferente para diferentes LAFS.