Inserir Espaço entre a Borda e o Componente

3 respostas
A

Olá Pessoal

Possui um Componente JTextField, que está inserido dentro de um JPanel com o Layout BorderLayout.
Esse JPanel é inserido dentro do meu JFrame, o problema que o JTextField ficou “grudado” na borda do JFrame. Gostaria de dar um espaço entre a Borda e o JTextField.
É possível fazer isso usando apenas LayoutManager?

Obrigado

3 Respostas

B

vc pode adicionar panels com tamanhos definidos ( preferedSize ) nas bordas ( SOUTH, EAST, WEST e NORTH ) e teu componente ficando do CENTER. Vc meio que cria uma “borda”…

Ou troque o layout manager. Vc poderia usar o GridBagLayout.

flw!

B
alex.lopes:
sobre o setPreferedSize, eu não entendi (eu sou bastante crú em Swing, trabalho masi com Web), e sobre o GridBagLayout, pois possuir muitos detalhes, gostaria de evitá-lo.

Poderia me mostrar um exemplo do setPreferedSize para não ficar encostado na borda do JFrame fazendo favor?

Segue um exemplo.
Para nao ver colorido, troque a propriedade Opaque para false dos quarto panels ( north, west, east e south ).

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * 
 * @author Bruno Rios Lima
 */
public class BordableFrame extends JFrame {
	
	public BordableFrame(){
		super("BordableFrame");
	}

	public static void main(String[] args) {
		
		BordableFrame fr = new BordableFrame();
		int tamanho_borda = 10;
		
		JPanel panelNorthYellow = new JPanel();
		panelNorthYellow.setOpaque(true);
		panelNorthYellow.setPreferredSize(new Dimension(tamanho_borda,tamanho_borda));
		panelNorthYellow.setBackground(Color.YELLOW);

		JPanel panelEastBlack = new JPanel();
		panelEastBlack.setOpaque(true);
		panelEastBlack.setPreferredSize(new Dimension(tamanho_borda,tamanho_borda));
		panelEastBlack.setBackground(Color.BLACK);

		JPanel panelWestBlue = new JPanel();
		panelWestBlue.setOpaque(true);
		panelWestBlue.setPreferredSize(new Dimension(tamanho_borda,tamanho_borda));
		panelWestBlue.setBackground(Color.BLUE);

		JPanel panelSouthGreen = new JPanel();
		panelSouthGreen.setOpaque(true);
		panelSouthGreen.setPreferredSize(new Dimension(tamanho_borda,tamanho_borda));
		panelSouthGreen.setBackground(Color.GREEN);

		JTextField text = new JTextField("Teste",20);
		fr.add(text, BorderLayout.CENTER);
		fr.add(panelNorthYellow, BorderLayout.NORTH);
		fr.add(panelSouthGreen, BorderLayout.SOUTH);
		fr.add(panelEastBlack, BorderLayout.EAST);
		fr.add(panelWestBlue, BorderLayout.WEST);
		
		fr.pack();
		fr.show();
		
	}
}
A

Valeu pelo exemplo Bruno
agora eu entendi o funcionamento.

obrigado mesmo :lol:

Criado 9 de novembro de 2004
Ultima resposta 12 de nov. de 2004
Respostas 3
Participantes 2