Aumentar largura da tabela

5 respostas
D

Fala galera, tenho um JInternalFrame e nele uma tabela q so tem 3 colunas ae quando maximizo fica muito feio, so as 3 no meio e a maior parte sem nada. Como aumenta a largura das colunas de uma tabela? Ja tentei tudo mas nao consigo. To usando DefaultTableModel mas posso mudar.

:cool:

5 Respostas

B
to desenvolvendo um sistema que tem exatmente isso que vc ta querendo ... o que devo estar acontecendo é que vc setou o layout do conteiner como null ... vou te passar um trecho do meu codigo q deve te ajadar ... se precisar da classe inteira posta de novo que eu coloco
public class TelaConsultar extends JInternalFrame implements ActionListener{

        static JTable tblDados = new JTable();
        DefaultTableModel modelo = new DefaultTableModel();
        private Connection con;
        private PreparedStatement ps;
        private ResultSet rs;
        JDesktopPane desktopTeste = null;
        private String linhacomando = null;
        private String cnpjempresasolicitante = null;
        private String co_cidade_endereco = null;
        private static ResultSet dadosConsulta = null;

        JPanel pnlCentro = new JPanel();
        JPanel pnlBotoes = new JPanel();

        JButton btnVisualizar = new JButton("Visualizar");
        JButton btnCancelar = new JButton("Cancelar");
        JButton btnVoltar = new JButton("<|");
        JButton btnAvancar = new JButton("|>");
        JScrollPane scrDados = new JScrollPane();
        Vector vecColunasTabela = new Vector();
        
        TelaCadastro tela = new TelaCadastro();
        public String idInspecao = null, cnpjSolicitante = null, inspecionada = null;       


public TelaConsultar() throws Exception{

               super("ANVISA - Consultar",true,true,false,true);
               setTitle("ANVISA - Consultas");
               setBounds((MenuInicial.LARGURA - 750)/2, (MenuInicial.ALTURA-590)/2,750,530);
               criaLayout();
               montaDados();

                show();

        }

 private void montaDados(){

          try {
            //Retorna um resultset com os dados da consulta
            con = Conexao.getConexaoAccess();
            ps = con.prepareStatement("SELECT id_inspecao, nu_cnpj_empresa_solicitante, nu_cnpj_empresa_inspecionada, co_empresa_int_inspecionada FROM TB_INSPECAO");
            rs = ps.executeQuery();

          } catch (ClassNotFoundException ex) {
            /** @todo  Falta inserir uma api de Log */
            System.out.println(" Erro Class Not Found montaDados! " +ex.getMessage());
          }
          catch (SQLException ex) {
            /** @todo  Falta inserir uma api de Log */
            System.out.println(" Erro SQLException montaDados TelaConsultar! " + ex.getMessage());
          }


        Vector vecDados = new Vector();

        Vector vecLinhaDados = null;
        boolean importarsimnao = false;
        try {
          int co_int = 0;
          while (rs.next()){
                  vecLinhaDados = new Vector();

                  vecLinhaDados.add(rs.getString("id_inspecao"));
                  vecLinhaDados.add(rs.getString("nu_cnpj_empresa_solicitante"));

                  co_int = rs.getInt("co_empresa_int_inspecionada");

                  if (co_int == 0)
                          vecLinhaDados.add(rs.getString("nu_cnpj_empresa_inspecionada"));
                  else
                          vecLinhaDados.add(co_int +"");

                  vecLinhaDados.add(new Boolean(importarsimnao));
                  vecDados.add(vecLinhaDados);
          }

                importarsimnao = false;

                modelo.setDataVector(vecDados, vecColunasTabela);

                tblDados.setModel(modelo);

        } catch (SQLException e) {

                e.printStackTrace();
        }

       SqlUtil.closeConnection(con,ps,rs);
        }

 private void criaLayout(){

                getContentPane().setLayout(new BorderLayout());
                getContentPane().add(BorderLayout.SOUTH ,pnlBotoes);
                getContentPane().add(BorderLayout.CENTER ,pnlCentro);

                pnlCentro.setLayout(new BorderLayout());
                pnlBotoes.setLayout(new FlowLayout());

                btnVoltar.addActionListener(this);
                btnVoltar.setToolTipText("Visualizar dados da Inspeção");
                pnlBotoes.add(btnVoltar);

                btnVisualizar.addActionListener(this);
                btnVisualizar.setToolTipText("Visualizar dados das empresas selecionadas");
                pnlBotoes.add(btnVisualizar);

                btnCancelar.addActionListener(this);
                btnCancelar.setToolTipText("Fechar Tela de Consulta");
                pnlBotoes.add(btnCancelar);  
                
                btnAvancar.addActionListener(this);
                btnAvancar.setEnabled(false);
                pnlBotoes.add(btnAvancar);

                
                pnlCentro.add(BorderLayout.CENTER , scrDados);

                scrDados.setBorder(BorderFactory.createBevelBorder(1));

                scrDados.getViewport().add(tblDados, null);

                modelo = new DefaultTableModel(){

                        public Class getColumnClass(int c) {

                          if (getValueAt(0,c) != null)
                                          return getValueAt(0,c).getClass();

                         return this.getClass();
                        }
               };


                vecColunasTabela.add("Inspeção");
                vecColunasTabela.add("Empresa Solicitante");
                vecColunasTabela.add("Empresa Inspecionada");
                vecColunasTabela.add("Visualizar");



        }
qualquer duvida referente ao codigo me da um toque abraço
D

Meu layout tava o padrão, mas mesmo colocando qualquer um tb nao da certo, essa é uma parte da classe:

public class Foo extends JFrame {
	private JDesktopPane janelaPai;
...
public Foo() {
		
		super("Teste");
		
		Container cont = getContentPane();	
		janelaPai = new JDesktopPane();
...
JInternalFrame frameInterno = new JInternalFrame("Teste" + digitado, true, true, true, true);
								Container cont3 = frameInterno.getContentPane();		cont3.setLayout( new BorderLayout() );
		cont3.add(visao);

		frameInterno.pack();
		janelaPai.add(frameInterno);
		frameInterno.setVisible(true);
...

Esse ‘visao’ é uma classe q chama outras, e uma dessas q tem a tabela.

...
public TabelaPainel() {
		
	setLayout( new BorderLayout(2, 2) );

	senhas = new DefaultTableModel();
		
	senhas.addColumn("Categoria");
	senhas.addColumn("Local");
	senhas.addColumn("Descrição");
	senhas.addColumn("Botão");
		
	tabela = new JTable(senhas);
...

Quando eu executo e abre o JInternalFrame da tudo blz mas a tabela fica como se fosse num tamanho padrão, da pra ver as colunas mas eu queria q ela ficasse extendida ja q JInternalFrame ja vai abrir maximizado. Tem alguma coisa de errado ae?
Valeu. :roll:

C

Olá,
Ja tentou:

setPreferredSize(new Dimension(largura,latura));

Até!

J

“Duende_Macabro”:
Fala galera, tenho um JInternalFrame e nele uma tabela q so tem 3 colunas ae quando maximizo fica muito feio, so as 3 no meio e a maior parte sem nada. Como aumenta a largura das colunas de uma tabela? Ja tentei tudo mas nao consigo. To usando DefaultTableModel mas posso mudar.

:cool:

oláaa

ja tentou o método setPreferredWidth da classe TableColumn ???

por exemplo:

TableColumn columnCheck = jTable.getColumn(“Nome”);
columnCheck.setPreferredWidth(int novotamanho);

só que pra calcular esse novo tamanho da coluna voce teria que acionar um component event pra calcular o novo tamanho do frame , fazer ums calculos pelo tamnho do mesmo , pra saber o quanto tem que aumentar os 3 campos de sua tabela

[]'s

D

Valeu, JavaNight aquilo funciona mas acho q eu nao fiz a pergunta direito, nao é exatamente as colunas q eu quero aumentar, é a largura da tabela geral, perguntei as colunas pq eu achava q se aumentando as colunas aumentava tb a tabela mas nao acontece. setPreferredSize da pau, nao compila :sad:

Criado 15 de julho de 2004
Ultima resposta 21 de jul. de 2004
Respostas 5
Participantes 4