Vou mostrar o resumo do codigo que explica melhor meu problema:
public class Janela extends JFrame{
JPanel painel;
GridLayout lay;
JMenuBar menu;
public Janela(){
painel = new JPanel();
lay = new GridLayout(0,5);
painel.setLayout(lay);
this.setJMenuBar(menu);
this.setLayout(new FlowLayout());
this.add(painel);
this.setMinimumSize(new Dimension(800, 600));
this.setVisible(true);
}
// O painel pequeno tem tamanho fixo
public void addPanels(JPanel pequeno){
painel.add(pequeno);
}
}
A ideia é o seguinte:
Na janela pode ter linhas com no minimo 5 painéis pequenos, por isso do:
lay = new GridLayout(0,5);
Quando a Janela abre, a largura de 800px é suficiente para mostrar todos os 5 paineis.
O que eu quero, é que a medida que o usuário aumente a janela na horizontal, mostre mais um painel, assim que possivel…
No meu PC por exemplo, quando maximizo a tela, era para ter linhas com 8 painéis pequenos.
Outra coisa, como pode haver “infinitos” painéis pequenos, quero que quando o usuário faça o resize na vertical, apareça uma barra de rolagem para mostrar os ocultos.
To novo no Java, então me desculpem caso isso seja trivial…
Use um JScrollPane e dentro dele adicione um painel com seus componentes.
Por exemplo:
// trabalho com meu painel normalmente
JPanel panel = new JPanel();
// adiciono nele todos os componentes...
for (int i = 0; i < 15; i++) {
panel.add(new JButton("Botão" + i);
}
// depois crio um JScrollPane que servirá para a rolagem
JScrollPane scroll = new JScrollPane(panel);
// e adiciono na janela o JScrollPane
add(scroll);
public class Janela extends JFrame{
JPanel painel;
GridLayout lay;
JMenuBar menu;
public Janela(){
JScrollPane scroll;
painel = new JPanel();
lay = new FlowLayouy();
painel.setLayout(lay);
scroll = new JScrollPane(c_PanelQuartos);
this.add(scroll);
this.setJMenuBar(menu);
this.setLayout(new FlowLayout());
this.add(painel);
this.setMinimumSize(new Dimension(800, 600));
this.setVisible(true);
}
// O painel pequeno tem tamanho fixo
public void addPanels(JPanel pequeno){
painel.add(pequeno);
}
}
Coloquei o painel maior com FlowLayout, ate eu criar o scroll, funciona perfeitamente com o resize do JFrame, organizando os paineis pequenos de acordo com o tamanho disponivel.
Mas quando insere mtos paineis pequenos, o JFrame corta o painel central.
Para resolver, colquei o scroll, mas ele insere um scroll na horizontal, e o paineis pequenos ficam em um linha so.