QUAL A DIFERENCA ENTRE MARGIN E PADDING?Os atributos de CSS margin e padding, embora em algumas ocasioes possam se comportar de maneira parecida na pratica, sao muito diferentes. Margin e a margem que ha desde um elemento ate os que tiverem ao lado. Padding e o espaco que ha em um container entre o conteudo e as bordas do container. Ou seja, ao especificar uma margin estamos definindo um espaco entre uma camada e as camadas texto, imagens ou outros conteudos que tiver aos lados. Ao especificar um padding em uma camada, por exemplo, estamos definindo o espaco que ha entre a borda da camada e o que tiver dentro. Layout Manager. Parte BorderLayout.O gerenciador de layout BorderLayout e o gerenciador padrao para as classes JFrame, JWindow, JDialog, JInternalFrame e JApplet. Este gerenciador divide um container em cinco regioes, a saber: centro (CENTER), norte (NORTH), sul (SOUTH), leste (EAST) e oeste (WEST).CENTER: Posiciona o componente na area central do container. O componente e redimensionado para ocupar toda a area livre. Se nenhum posicionamento for especificado, este e adotado como padrao;NORTH: Posiciona o componente na area superior (norte) do container. A altura do componente e respeitada, mas a largura e redimensionada para ocupar todo o espaco horizontal;SOUTH: Posiciona o componente na area inferior (sul) do container. O redimensionamento e semelhante ao componente da posicao NORTH;WEST: Posiciona o componente na parte esquerda (oeste) do container. Para este caso a largura do componente e respeitada, porem a altura e redimensionada para ocupar todo o espaco vertical;EAST: Posiciona o componente na parte direita (leste) do container. O redimensionamento ocorre de forma semelhante ao componente da posicao WEST.Obs.: As constantes apresentadas definem posicionamento absoluto. Mas tambem existem algumas constantes para posicionamento relativo a orientacao dos componentes, sao eles PAGE_START, PAGE_END, LINE_START e LINE_END.Botando a teoria em pratica, vamos criar um painel com BorderLayout e inserir um componente na posicao central:package devsv.layout.border;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.JButton;import javax.swing.JPanel;public class BorderLayoutPanel extends JPanel { BorderLayout layout; public BorderLayoutPanel() { initialize(); } private void initialize() { setPreferredSize(new Dimension(400, 300)); layout = new BorderLayout(); setLayout(layout); add(new JButton("Center"), BorderLayout.CENTER); } }Para exibir este painel, vamos criar uma janela:package devsv.layout.test;import java.awt.EventQueue;import javax.swing.JFrame;import devsv.layout.border.BorderLayoutPanel;public class BorderLayoutTest extends JFrame { public BorderLayoutTest() { super("BorderLayoutTest"); setDefaultCloseOperation(EXIT_ON_CLOSE); setContentPane(new BorderLayoutPanel()); pack(); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new BorderLayoutTest().setVisible(true); } }); }} Como podemos ver, o botao adicionado na posicao CENTER se redimensionou, passando a ocupar toda a area disponivel na tela. Continuando o exemplo, adicionaremos dois botoes nas laterais do painel, conforme as linhas de codigo em destaque:private void initialize() { setPreferredSize(new Dimension(400, 300)); layout = new BorderLayout(); setLayout(layout); add(new JButton("Center"), BorderLayout.CENTER); add(new JButton("West"), BorderLayout.WEST); add(new JButton("East"), BorderLayout.EAST);}Desta vez, os botoes do oeste e do leste se redimensionaram apenas verticalmente, ja o botao central continua ocupando todo o espaco livre. Para completar, vamos posicionar botoes ao norte e ao sul do painel:private void initialize() { setPreferredSize(new Dimension(400, 300)); layout = new BorderLayout(); setLayout(layout); add(new JButton("Center"), BorderLayout.CENTER); add(new JButton("West"), BorderLayout.WEST); add(new JButton("East"), BorderLayout.EAST); add(new JButton("North"), BorderLayout.NORTH); add(new JButton("South"), BorderLayout.SOUTH);}Neste exemplo temos