Para diego2005 e quem mais souber: Manipulações

4 respostas
Linkel

Aí, como eu faço para:

  1. Determinar o tamanho de cada coluna no JTable?
  2. Pegar os valores das celulas de uma linha e jogar em vários JTextField’s quando clicar duas vezes sobre a linha?
  3. Permitir apenas entrada de letras maiúsculas nos JTextField’s…
  4. Bloquear a entrada de acentos nos JTextField’s…
  5. Executar método ActionPerformed de um JButton quando o usuário pressionar a tecla <enter>;
    e 6) Mostrar colunas de outras tabelas relacionadas no JTable. Ex.: "Na tabela “tblClientes” tenho o campo cidade que é chave estrangeira da tabela “tblCidades”; Como mostrar o nome da cidade no registro do cliente numa JTable?

Se alguém puder me responder essas perguntas me ajudaria a dar um grande passo!

Muito obrigado!

T+

4 Respostas

ViniGodoy

1) Você pode determinar os tamanhos da tabela usando a classe TableColumn e desabilitando a criação automática de colunas pelo Model:

//Crie um objeto do tipo TableColumn
TableColumn colProduct = new TableColumn();

//Defina o seu tamanho
colProduct.setPreferredWidth(280);

//Associe a coluna ao índice dela no seu model
colProduct.setModelIndex(0); 

//Associa o column a sua tabela
suaTabela.setAutoCreateColumnsFromModel(false);
suaTabela.addColumn(colProduct);

2. Em primeiro lugar, não use o DefaultTableModel. Crie um model seu, que trabalhe com objetos da classe que você está apresentando na tela. Depois, basta adicionar um MouseListener na sua tabela. Se for um clique só, é melhor usar um SelectionListener.

suaTabela.addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent evt) {
      if (evt.getClickCount() == 2) //O usuário deu 2 cliques?
           //Chama seu método para preencher os campos
           fillFields(seuModel.get(suaTabela.getSelectedRow())); 
      }
   }
}

3) Dê uma olhada no tutorial do GUJ, controlando um JTextField, e no método toUpperCase da classe String.

4) Novamente, veja o item 3.

5) Se você quer isso para criar um botão default, use o seguinte código:
getRootPane().setDefaultButton(umBotaoQualquer);

Esse botão terá um desenho mais forte e será acionado com o enter, a partir de qualquer ponto do seu form.

Se a sua idéia é simplesmente usar o enter e outras teclas (como numa calculadora), dê uma olhada neste tópico.

6) Crie seu próprio TableModel. Há informações sobre isso nos artigos do GUJ e aqui na página da Sun:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data

Linkel

Aí, VinniGodoy, valeu pela força, mas não rolou muito não…

Sou iniciante e não consegui entender nada…
Eu preciso de soluções mais práticas…

Será que você poderia me dizer como fazer para implementar minha JTable com esses recursos que preciso apartir da JTable que já criei, listada a seguir?

DefaultTableModel modelo = new DefaultTableModel(null, new String[] {"Nome","Data Nasc"}); tablePesquisa.setModel(modelo); rs = stmt.executeQuery(SQLPesquisaPaciente); while(rs.next()) { String[] dados = new String[1]; dados[0] = rs.getString("Nome_Pac"); dados[1] = rs.getString("DataNasc_Pac"); modelo.addRow(dados); }

Valeu!

ViniGodoy

O que você não entendeu a respeito do TableColumn?

E o setDefaultButton, nem isso vc conseguiu usar? Não sei o que pode ser mais prático do que uma simples chamada de método.

Você chegou a ler os tutoriais que te passei?

Você está usando o DefaultTableModel. Com ele, você tem pouco controle e um código pouco legível. Se for para começar em algum lugar, pegue os esse tutorial do GUJ e dê uma lida. As tabelas em java são muito poderosas, mas não é trivial usa-las.

O tutorial está aqui:
http://www.guj.com.br/java.tutorial.artigo.147.1.guj

Marky.Vasconcelos

e sobre isso

DefaultTableModel modelo = new DefaultTableModel(null, new String[] {"Nome","Data Nasc"});
 tablePesquisa.setModel(modelo);
 rs = stmt.executeQuery(SQLPesquisaPaciente);
 while(rs.next()) {
     String[] dados = new String[1];
     dados[0] = rs.getString("Nome_Pac");
     dados[1] = rs.getString("DataNasc_Pac");
     modelo.addRow(dados);
 }

recomendo PARAR de usar DefaultTableModel e criar um model seu que estenda AbstractTableModel

Criado 20 de agosto de 2007
Ultima resposta 20 de ago. de 2007
Respostas 4
Participantes 3