Uma GUI sem espaço em branco aparece "lotada". Como posso fornecer espaço em branco sem precisar definir explicitamente a posição ou o tamanho dos componentes?
java
swing
whitespace
layout-manager
Andrew Thompson
fonte
fonte
Respostas:
O uso de vários
LayoutManagers
pode fornecer espaçamento entre os vários componentes.1.) BorderLayout:
Métodos getter e setter
Para espaçamento horizontal : BorderLayout.getHgap () e BorderLayout.setHgap (int hgap)
Para espaçamento vertical : BorderLayout.getVgap () e BorderLayout.setVgap ()
2.) FlowLayout:
Métodos getter e setter
Para espaçamento horizontal : FlowLayout.getHgap () e FlowLayout.setHgap (int hgap)
Para espaçamento vertical : FlowLayout.getVgap () e FlowLayout.setVgap ()
3.) GridLayout:
Métodos getter e setter
Para espaçamento horizontal : GridLayout.getHgap () e GridLayout.setHgap (int hgap)
Para espaçamento vertical : GridLayout.getVgap () e GridLayout.setVgap ()
4.) GridBagLayout:
GridBagConstraints.insets
5.) CardLayout ( exemplo ):
CardLayout (int hGap, int vGap)
Exemplo para exibir todos os construtores em ação:
RESULTADO :
fonte
Existem várias maneiras em uma GUI Swing para fornecer uma separação entre componentes e espaço em branco ao redor dos componentes:
JToolBar
tem os métodosaddSeparator()
&addSeparator(Dimension)
.JMenu
usa um componente de espaçamento mais adequado para menus, disponíveis através deaddSeparator()
.Mas, de maneira mais geral, observe:
Aqui está um exemplo de uso do separador de layout
hGap
evGap
valores e bordas (especificamente umEmptyBorder
) para fornecer espaço em 'branco' (na verdade mostrado em vermelho para torná-lo muito óbvio). Ajuste os giradores para ver o resultado.fonte
Quando você usa
BoxLayout
, oBox.createVerticalGlue()
método pode ajudá-lo a criar algum espaço em branco.Outro método é
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
. Isso pode ajudá-lo a criar algum espaço em branco ao redor do componente.Obrigado pelo lembrete de Andrew Thompson. Revi o BoxLayout nos últimos dias e acho que
Box.createVerticalGlue()
pode adicionar algum espaço em branco, dependendo do tamanho do painel, e você não pode definir o valor explícito do pixel do tamanho do espaço em brancoBox.createVerticalStrut()
. Aqui está um MCTaRE e mostra o efeito desses dois métodos.Box.createHorizontalGlue()
eBox.createHorizontalStrut(int height)
pode ser usado também. Além disso, tambémBox.createRigidArea(Dimension d)
tem a capacidade de criar espaços em branco.fonte
MigLayout
tem várias maneiras de criar espaço. (Um espaço é chamado de lacuna neste layout.) É possível criar intervalos no nível mais alto com restrições de layout, é possível criar intervalos entre linhas e colunas e também podem ser definidos intervalos entre componentes individuais com restrições de componentes. Também existem lacunas específicas nas bordas de um contêiner chamado inserções que possuem sua própria palavra-chave específica a ser definida.O exemplo a seguir cria todos esses tipos de lacunas:
Temos quatro painéis no layout. Cada um desses painéis tem um
MigLayout
gerente.Essa linha cria inserções de contêineres e espaços verticais entre os painéis.
Aqui aplicamos intervalos para toda a estrutura da grade e também definimos intervalos de contêineres.
Essa linha cria espaços entre as colunas.
As lacunas de linha são definidas com este código.
Finalmente, é possível criar intervalos entre componentes individuais.
fonte
JGoodies FormLayout .
O autor Karsten Lentzsch tem uma coleção de apresentações sobre design de interface do usuário. Em particular, este PDF fala da necessidade de espaço em branco estético. Adicionar espaço significativo e também prestar atenção à desordem separa o trigo do joio.
fonte
Sempre que tenho esse problema, apenas uso o JPanels. Por exemplo, em um GridLayout:
Espero que isso tenha ajudado :)
fonte