Como não deixar um panel aumentar seu tamanho?

3 respostas
E
Ai galera, eu fiz o seguinte código
package teste;
import java.awt.GridLayout;
import javax.swing.*;

public class panel_tabuleiro extends JPanel {
       public panel_tabuleiro() {
        this.setSize(320, 300);
        this.setLayout(new GridLayout(10, 10, 1, 1));

        Icon agua = new ImageIcon(getClass().getResource("agua.gif"));
        JButton jButton[] = {new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua), new JButton("", agua)};

        for (int x = 0; x < 100; x++) {
            this.add(jButton[x]);
        }
    }      
}
package teste;

import java.awt.BorderLayout;
import javax.swing.JFrame;

public class tela_principal extends JFrame {
    public panel_tabuleiro tab1;
    public panel_tabuleiro tab2;

    public tela_principal() {
        super("Batalha Naval");
        getContentPane().setLayout(new BorderLayout());

        tab1 = new panel_tabuleiro();
        tab2 = new panel_tabuleiro();

        this.setSize(600,700);
        this.setResizable(false);
        getContentPane().add(tab1,BorderLayout.WEST);
        getContentPane().add(tab2,BorderLayout.EAST);

        tab1.setPreferredSize(new java.awt.Dimension(300,300));
        tab2.setPreferredSize(new java.awt.Dimension(300,300));

    }

    public static void main(String[] arg) {
        tela_principal usan = new tela_principal();
        usan.setVisible(true);
    }
}

Quando executo o jframe, os jpanels aumentam de tamanho sendo que era pra terem no maximo 300x300

3 Respostas

E

O problema é pq estou usando um borderlayout e como só estou ocupando 2 espaços dele, esses 2 ocupam o espaço dos outros?

Eric_Yuzo

Esta é uma característica do BorderLayout, os componentes adicionados em NORTH e SOUTH redimensionam horizontalmente ocupando toda a área, os componentes adicionados em EAST e WEST redimensionam verticalmente ocupando toda a área, e o componente adicionado no CENTER ocupa o resto do espaço se redimensionando para todos os lados, caso necessário.

Para que seus panels não redimensionem teria de utilizar um layout manager que respeite o preferred size dos componentes como o FlowLayout.

E

Eric Yuzo:
Esta é uma característica do BorderLayout, os componentes adicionados em NORTH e SOUTH redimensionam horizontalmente ocupando toda a área, os componentes adicionados em EAST e WEST redimensionam verticalmente ocupando toda a área, e o componente adicionado no CENTER ocupa o resto do espaço se redimensionando para todos os lados, caso necessário.

Para que seus panels não redimensionem teria de utilizar um layout manager que respeite o preferred size dos componentes como o FlowLayout.

Vlw velho, vou tentar com esse flowlayout

Criado 24 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 3
Participantes 2