Na minha tela de detalhes(JInternalFrame), tenho um JPanel no CENTER(usando BorderLayout)
Entao colocao varios campos nela para mostrar o detalhes de um cadastro de cliente
mas fazendo um teste mais extremo, colocando varios detalhes estou tendo um problema para aparecer tudo direitinho…tentei usar um JScroll Pane mas o layout dele n consegui fazer oq que quero
Quero um Layout que adicione, como o Flow Layout (usando LEFT) e que quando não caiba mais nada pule a linha…se chegar no fnal da linha ele coloca um scroll…mas o JScrollPane Layout n faz isso
entao n sei oq fazer…nem com o MigLayout n consegui.
Segue o codigo:
[code]public class TelaDeDetalhes extends JInternalFrame implements ActionListener
{
private JPanel menuLateral;
private String imagemMenuLateral;
private JPanel painelPrincipal;
private JPanel painelDeInfos;
public TelaDeDetalhes(String titulo, String caminhoImagem)
{
super(titulo, true, true, true, true);
if(!caminhoImagem.equals(""))
this.imagemMenuLateral = caminhoImagem;
this.setSize(700, 300);
this.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
this.construirMenuLateral();
this.construirPainelPrincipal();
}
public TelaDeDetalhes(String titulo)
{
this(titulo, "");
}
public void construirMenuLateral()
{
this.menuLateral = new JPanel();
this.menuLateral.setLayout(new BoxLayout(menuLateral, BoxLayout.Y_AXIS));
if(this.imagemMenuLateral != null)
{
URL caminho = getClass().getResource(this.imagemMenuLateral);
ImageIcon icone = new ImageIcon(caminho, "");
JLabel imagem = new JLabel(icone);
imagem.setBorder(BorderFactory.createEmptyBorder(5, 10, 10, 10));
this.menuLateral.add(imagem);
}
JButton botaoFechar = this.criaBotaoDeMenu("Fechar");
botaoFechar.addActionListener(this);
this.getMenuLateral().add(botaoFechar);
this.add(menuLateral, BorderLayout.EAST);
}
private JButton criaBotaoDeMenu(String nome)
{
JButton botao = new JButton(nome);
botao.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
Dimension d = new Dimension(80, 30);
botao.setMaximumSize(d);
botao.setPreferredSize(d);
botao.setSize(d);
botao.setMaximumSize(d);
return botao;
}
public void actionPerformed(ActionEvent e)
{
this.dispose();
}
/**
* @return the menuLateral
*/
public JPanel getMenuLateral()
{
return menuLateral;
}
private void construirPainelPrincipal()
{
this.painelPrincipal = new JPanel();
this.painelDeInfos = new JPanel();
this.painelPrincipal.setLayout(new BorderLayout());
this.add(this.painelPrincipal, BorderLayout.CENTER);
JLabel l = new JLabel("Detalhes");
l.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
l.setFont(new Font("Times New Roman", Font.BOLD+Font.ITALIC, 14));
this.painelPrincipal.add(l, BorderLayout.NORTH);
JScrollPane barraDeRolagem = new JScrollPane(painelDeInfos);
barraDeRolagem.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
this.painelPrincipal.add(BorderLayout.CENTER, barraDeRolagem);
this.painelDeInfos.setLayout(new FlowLayout(FlowLayout.LEFT));
}
public void adicionarInfo(String nome, Object info)
{
JPanel p = new JPanel();
p.setLayout(new MigLayout("","[right][left]"));
p.add(new JLabel(nome+":"));
p.add(new JTextField(info.toString()));
this.painelDeInfos.add(p);
}
}[/code]
dai uso varios
teladedetalhes.adicionarInfo(“ALGO”, “ALGO”);
dai ele n pula linha quando chega no final do JPanel…e n da pra ver
como disse com o Flow Layout ficou muito bom, mas quando ele passa o tamanho do JPanel pra baixo ele n aparece os campos…