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?
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
brlima
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 ).
importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Dimension;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;/** * * @author Bruno Rios Lima */publicclassBordableFrameextendsJFrame{publicBordableFrame(){super("BordableFrame");}publicstaticvoidmain(String[]args){BordableFramefr=newBordableFrame();inttamanho_borda=10;JPanelpanelNorthYellow=newJPanel();panelNorthYellow.setOpaque(true);panelNorthYellow.setPreferredSize(newDimension(tamanho_borda,tamanho_borda));panelNorthYellow.setBackground(Color.YELLOW);JPanelpanelEastBlack=newJPanel();panelEastBlack.setOpaque(true);panelEastBlack.setPreferredSize(newDimension(tamanho_borda,tamanho_borda));panelEastBlack.setBackground(Color.BLACK);JPanelpanelWestBlue=newJPanel();panelWestBlue.setOpaque(true);panelWestBlue.setPreferredSize(newDimension(tamanho_borda,tamanho_borda));panelWestBlue.setBackground(Color.BLUE);JPanelpanelSouthGreen=newJPanel();panelSouthGreen.setOpaque(true);panelSouthGreen.setPreferredSize(newDimension(tamanho_borda,tamanho_borda));panelSouthGreen.setBackground(Color.GREEN);JTextFieldtext=newJTextField("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
alex.lopes
Valeu pelo exemplo Bruno
agora eu entendi o funcionamento.