2015-02-20 3 views
1

Как я уже прочитал, очень сложно обрабатывать изменения компонентов внутри GridLayout и GrigBagLayout. В моем случае у меня есть GridBagLayout с 2 столбцами и 2 строками. В первой строке есть две метки, а во втором - 2 компонента (тип Tablero), которые расширяют JTable.Как установить размер компонента внутри GridBagLayout

Моя проблема заключается в том, что я не могу сделать эти 2 JTables заполнять JFrame до самого низа. Я пробовал setSize(), setPreferredSize(), setBounds() ... но они вообще не работают. Я тоже пытался это сделать constraints.fill = GridBagConstraints.VERTICAL/SOUTH/CENTER ... но я абсолютно ничего не получаю. Я также попытался установить размер JPanel внутри JFrame, но это не работает ...

Это мой код:

public static void main(String[] args) 
{ 

    JFrame pantalla = new JFrame(); 

    pantalla.getContentPane().setLayout(new GridBagLayout()); 
    GridBagConstraints constraints = new GridBagConstraints(); 

    JLabel tab1Label = new JLabel("Tablero 1"); 
    JLabel tab2Label = new JLabel("Tablero 2"); 

    Tablero tablero1 = new Tablero(); 
    Tablero tablero2 = new Tablero(); 
    tablero1.setPreferredSize(new Dimension(400,400)); 
    tablero1.setBounds(0, 0, 400, 400); 

    tablero1.setBorder(new LineBorder(Color.gray, 2)); 

    constraints.gridx = 0; 
    constraints.gridy = 0; 
    constraints.gridwidth = 1; 
    constraints.gridheight = 1; 
    constraints.insets = new Insets(0, 0, 20, 0); 
    pantalla.getContentPane().add(tab1Label, constraints); 

    constraints.gridx = 1; 
    constraints.gridy = 0; 
    constraints.gridwidth = 1; 
    constraints.gridheight = 1; 
    constraints.insets = new Insets(0, 0, 20, 0); 
    pantalla.getContentPane().add(tab2Label, constraints); 

    constraints.insets = new Insets(0, 0, 0, 0); 

    constraints.fill = GridBagConstraints.VERTICAL; 
    constraints.gridx = 0; 
    constraints.gridy = 1; 
    constraints.gridwidth = 1; 
    constraints.gridheight = 1; 
    pantalla.getContentPane().add(tablero1, constraints); 

    constraints.fill = GridBagConstraints.VERTICAL; 
    constraints.gridx = 1; 
    constraints.gridy = 1; 
    constraints.gridwidth = 1; 
    constraints.gridheight = 1; 
    pantalla.getContentPane().add(tablero2, constraints); 

    pantalla.pack(); 
    pantalla.setSize(800, 400); 
    pantalla.setVisible(true); 
    pantalla.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
} 

И вот результат:

enter image description here

Я знаю, что есть и другие способы проще всего это сделать, но использовать GridBagLayout фактически requeriment.

ответ

2

Попробуйте добавить constraints.weightx = 1; и constraints.weighty = 1; к вашим ограничениям JTables.

Также удалите эти строки:

tablero1.setPreferredSize(new Dimension(400,400)); 
tablero1.setBounds(0, 0, 400, 400); 
Смежные вопросы