Olá pessoal!
Estou com uma dúvida bem básica. Tenho um JFrame que tem em sua porção SOUTH um JPanel. Este JPanel (layout setado para GridLayout) tem uma série de botões. Um destes botões, ao ser clicado, modifica o tamanho do JFrame.
O JFrame está tendo seu tamanho modificado, mas os componentes internos (O JPanel com os botões) não estão se adequando ao novo tamanho. Tal adequação só ocorre se eu redimensionar, via mouse, o JFrame.
Gostaria que os colegas me indicasse o que estou fazendo de errado. Segue abaixo um código que exemplifica a minha situação. Valeu!
/**
* Author: luciano.mantuaneli
* 13/08/2008
*/
package tmp;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TMPFrame extends JFrame {
private JButton btnImport;
private JButton btnPreview;
private JButton btnGen;
private JButton btnRollback;
private JButton btnCommit;
private JButton btnClose;
public TMPFrame() {
super("BLA");
instantiateComponents();
configGui();
}
private void instantiateComponents() {
btnImport = new JButton("Import XSD");
btnPreview = new JButton("Preview");
btnGen = new JButton("Save Java File");
btnRollback = new JButton("Rollback changes");
btnCommit = new JButton("Commit changes");
btnClose = new JButton("Close");
}
private void configGui() {
btnImport.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
TMPFrame.this.handleImportAction(e);
}
}
);
/* blablabla...*/
JPanel pnlBtns = new JPanel(new GridLayout(3, 3));
pnlBtns.add(btnImport);
pnlBtns.add(btnPreview);
pnlBtns.add(btnGen);
pnlBtns.add(btnRollback);
pnlBtns.add(btnCommit);
pnlBtns.add(btnClose);
Container c = getContentPane();
c.add(pnlBtns, BorderLayout.SOUTH);
pack();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
protected void handleImportAction(ActionEvent e) {
setSize(520, 580);
repaint();
}
public static void main(String[] args) {
TMPFrame abg = new TMPFrame();
abg.setVisible(true);
}
}