[RESOLVIDO] Redimensionar JTable em minha aplicação!

7 respostas
Nicolas_Fernandes

E aí, galerinha do GUJ!
Tudo bem?

Tô com um problema na minha interface. Quero que a minha JTable ocupe todo o espaço do JPanel que ela está inserida, só que não tô conseguindo...
Alguma ideia?

O código é esse:
public class GUIPrincipal extends GUIBaseFrame {

    public GUIPrincipal(Connection currentConnection) {
        super(currentConnection);
    }

    @Override protected void initGUIComponents() {

        setTitle(".: Recursos Humanos - Página Principal :.");
        setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize());

        add(getPanelEsquerda(), BorderLayout.WEST);
        add(getPanelDireita(), BorderLayout.CENTER);
        add(getPanelUsuarioLogado(), BorderLayout.SOUTH);
    }

    private JPanel getPanelEsquerda() {

        JPanel panelEsquerda = new JPanel(new BorderLayout());
        panelEsquerda.add(getPanelBotoes(), BorderLayout.PAGE_START);
        panelEsquerda.setBorder(BorderFactory.createBevelBorder(1, Color.lightGray, Color.gray));

        return panelEsquerda;
    }

    private JPanel getPanelDireita() {

        JPanel panelDireita = new JPanel(new BorderLayout());
        panelDireita.add(getPanelConteudo(), BorderLayout.WEST);
        panelDireita.setBorder(BorderFactory.createBevelBorder(1, Color.lightGray, Color.gray));

        return panelDireita;
    }

    private JPanel getPanelUsuarioLogado() {

        JPanel panelUsuarioLogado = new JPanel(new BorderLayout());
        JLabel labelUsuarioLogado = new JLabel("Logado como: Nícolas Alberto de Paiva e Fernandes");
        labelUsuarioLogado.setFont(new Font("Tahoma", 1, 11));
        panelUsuarioLogado.add(labelUsuarioLogado, BorderLayout.WEST);
        Calendar calendar = new GregorianCalendar();
        JLabel labelHorarioLogin = new JLabel(calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));
        labelHorarioLogin.setFont(new Font("Tahoma", 1, 11));
        panelUsuarioLogado.add(labelHorarioLogin, BorderLayout.EAST);
        panelUsuarioLogado.setBorder(BorderFactory.createBevelBorder(1, Color.lightGray, Color.gray));

        return panelUsuarioLogado;
    }

    private JPanel getPanelConteudo() {

        JPanel panelConteudo = new JPanel();

        JTable tableApuracoes = new JTable(10, 10);
        JScrollPane scrollTabela = new JScrollPane(tableApuracoes);
        panelConteudo.add(scrollTabela);

        return panelConteudo;
    }
    private JPanel getPanelBotoes() {

        JPanel panelBotoes = new JPanel(new GridBagLayout());
        GridBagConstraints cc = new GridBagConstraints();
        cc.insets = new Insets(5, 5, 5, 5);
        cc.gridx = 0;
        cc.gridy = 0;


        JButton buttonFuncionario = new JButton("Ponto do funcionário");
        buttonFuncionario.setPreferredSize(new Dimension(200, 30));
        JButton buttonSetor = new JButton("Apuração do setor");
        buttonSetor.setPreferredSize(new Dimension(200, 30));
        JButton buttonRH = new JButton("Apuração do RH");
        buttonRH.setPreferredSize(new Dimension(200, 30));


        panelBotoes.add(buttonFuncionario, cc);
        cc.gridy++;
        panelBotoes.add(buttonSetor, cc);
        cc.gridy++;
        panelBotoes.add(buttonRH, cc);

        return panelBotoes;
    }
}

Anexo ao tópico, há uma screenshot da tela após compilar o código acima.
Grato pela ajuda, galera!
Fiquem com Deus, abraço!

7 Respostas

fernandopaiva

vc esta escrevendo sua JTable ??? meu Deus…to fora disso.
Depois q conheci o NetBeans nunca mais escrevi um componente na mão, a não ser q seja muiiiiiiiiito necessário.

Fica a dica, use NetBeans e seja feliz.

t+ e boa sorte.

P

oi,
o painel em q vc esta adicionando sua jtable,vc add ele direto no frame ou vc coloca ele em outro jpanel e depois add no frame?
tenta colocar o tamanho da jtable igual ou maior q a deste painel =D

Nicolas_Fernandes

fernandopaiva:
vc esta escrevendo sua JTable ??? meu Deus…to fora disso.
Depois q conheci o NetBeans nunca mais escrevi um componente na mão, a não ser q seja muiiiiiiiiito necessário.

Fica a dica, use NetBeans e seja feliz.

t+ e boa sorte.

Fala, Fernando!
Depois que conheci o Matisse do Netbeans, eu nunca mais fiz uma interface naquilo. JESUS, QUANTO LIXO ELE GERA!
A melhor coisa é desenvolver seus próprios componentes, com suas próprias funcionalidades… Você faz componentes reusáveis, heranças de telas… Além do que você pode usar frameworks externas, tais como MigLayout, JGoodies, os quais facilitam DEMAIS o desenvolvimento, deixando seu código limpinho!

Sinceramente, vale a pena analisar isso!
Abraços!

Nicolas_Fernandes

paty_trind:
oi,
o painel em q vc esta adicionando sua jtable,vc add ele direto no frame ou vc coloca ele em outro jpanel e depois add no frame?
tenta colocar o tamanho da jtable igual ou maior q a deste painel =D

Oi, Paty!
Bom, eu adiciono minha tabela em um JScrollPane, para criar a barra de rolagem. Após isso, adiciono esse JScrollPane em um JPanel, o panelDireita. E adiciono esse JPanel no meu frame. Bem que tentei fazer isso do tamanho, mas não consegui.

Any idea?

C

Fiz uns testes com o exemplo q vc postou, modifiquei algumas coisas pois n tenho todas as classes pra funcionar, mas acredito que irá funcionar modificando onde ta "AKI"

private JPanel getPanelDireita() {

        JPanel panelDireita = new JPanel(new BorderLayout());
        panelDireita.add(getPanelConteudo(), BorderLayout.CENTER);//AKI
        panelDireita.setBorder(BorderFactory.createBevelBorder(1, Color.lightGray, Color.gray));

        return panelDireita;
    }
private JPanel getPanelConteudo() {

        JPanel panelConteudo = new JPanel(new GridLayout(1,1));//AKI

        JTable tableApuracoes = new JTable(10, 10);
        JScrollPane scrollTabela = new JScrollPane(tableApuracoes);
        panelConteudo.add(scrollTabela);

        return panelConteudo;
    }
ViniGodoy

Eu colocaria o painel conteúdo no EAST e o painel do JTable no CENTER do seu BorderLayout.

Nicolas_Fernandes

Valeu, gente, já consegui resolver!
Bobeira minha: meu JScrollPane era colocado em um JPanel e esse JPanel colocado no formulário. Logo, o JPanel se redimensionava para ficar do tamanho do JScrollPane. Então, eu adicionei o JScrollPane direto no formulário, e assim ele ocupou todo o espaço CENTER do BorderLayout.

Valeu pela ajuda, fiquem com Deus!

Criado 23 de setembro de 2011
Ultima resposta 3 de out. de 2011
Respostas 7
Participantes 5