boa tarde pessoal !!!
Eu preciso de um keyevent (keypress), quando começar a digitar dentro da celula da primeira coluna de uma jtable… alguém poderia me ajudar ???
boa tarde pessoal !!!
Eu preciso de um keyevent (keypress), quando começar a digitar dentro da celula da primeira coluna de uma jtable… alguém poderia me ajudar ???
Alguém ???
http://www.exampledepot.com/egs/javax.swing.table/CustEdit.html
http://www.exampledepot.com/egs/javax.swing.table/pkg.html
[quote=entanglement]http://www.exampledepot.com/egs/javax.swing.table/CustEdit.html
http://www.exampledepot.com/egs/javax.swing.table/pkg.html[/quote]
vlw pela dica amigo… o problema é que o keypress JTable não funciona se por exemplo eu estiver digitando algo dentro de uma celula…que o eu preciso…quando tiver digitando algo dentro da celula chamar o event keypress…
Você não pode adicionar um componente de texto na celula, um JTextField?
Só uma dica! :lol:
[quote=wspinheiro]Você não pode adicionar um componente de texto na celula, um JTextField?
Só uma dica! :lol:[/quote]
bom o problema que vou ter que adicionar novos dados, como produtos por exemplo… pode ser 1 produto ou 20 por exemplo…ai fica inviável assim…vlw
Você normalmente não pode tratar KeyEvents em tabelas e em muitos componentes de texto. Você é obrigado a criar Editors ou coisas parecidas. Lembre-se, Swing != .NET
[quote=entanglement]Você normalmente não pode tratar KeyEvents em tabelas e em muitos componentes de texto. Você é obrigado a criar Editors ou coisas parecidas. Lembre-se, Swing != .NET
[/quote]
Tenso viu…hehe geralmente em Delphi é mais simples isso… ehe
mas teria alguma dica de como começar então ??? vlw pelo apoio
JTable não pode implementar um KeyListner?
alguém ?
??
Você vai ter que dar um rodeio criando um editors igual o nosso amigo falou. Uma espécie de classe que vá chamar listners e por resultados na table, algum componente customizado etc…
Veja isso se ajuda!
http://download.oracle.com/javase/tutorial/uiswing/components/table.html#fire
o TableRenderDemo achei bem legalzinho… rsrs
e também
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/event/TableColumnModelListener.html
:lol:
Se explicar seu problema, dá para indicar como é que dá para resolver sem KeyPress ou coisa parecida.
Não seja bitolado: em Java é necessário pensar primeiro, e ver como é que se pode resolver as coisas sem pensar igual a outras linguagens. É que em Java normalmente você precisa fazer as coisas de jeito diferente. Muito raramente você pode resolver as coisas em Java tratando um evento de KeyPress - na verdade, se você teve de fazer isso, provavelmente fez errado.
Por exemplo, uma coisa que muitas vezes é necessária é digitar um valor de moeda em uma célula de um JTable, e outra coisa que é necessária é atualizar alguma coisa quando se acaba de editar essa célula (por exemplo, quando você sai dessa célula e vai editar outra, ou dá um TAB ou um ENTER). Mas nenhuma dessas coisas se resolve exatamente desse jeitino que você quer resolver as coisas na marra. Como disse, Swing != .NET e Delphi.
Oi,
1- Crie um JTextField ou qualquer componente de texto;
2- Recebe a coluna que você quer adicionar o KeyPress;
2- Adicione nessa coluna um JTextField;
3- Adicione o evento de teclado neste JTextField;
Código:
// Criando meu componente de texto
JTextField textfield = new JTextFiel......
// Recebendo a coluna 1.
TableColumn
lo_column = tabela.getColumnModel().getColumn(1);
// Adicionando a coluna um componente de texto
lo_column.setCellEditor(new TableColumnTextComponent(textfield));
// Adiciona um KeyListener para o seu componente de texto
textfield.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent evt) {}});
Inner-class TableColumnTextComponent
/**
Componente de texto para a JTable.
*/
private class TableColumnTextComponent extends DefaultCellEditor
{
public TableColumnTextComponent(JTextField ao_component) {
super(ao_component);
}
}
Tchauzin!
[quote=entanglement]Se explicar seu problema, dá para indicar como é que dá para resolver sem KeyPress ou coisa parecida.
Não seja bitolado: em Java é necessário pensar primeiro, e ver como é que se pode resolver as coisas sem pensar igual a outras linguagens. É que em Java normalmente você precisa fazer as coisas de jeito diferente. Muito raramente você pode resolver as coisas em Java tratando um evento de KeyPress - na verdade, se você teve de fazer isso, provavelmente fez errado.
Por exemplo, uma coisa que muitas vezes é necessária é digitar um valor de moeda em uma célula de um JTable, e outra coisa que é necessária é atualizar alguma coisa quando se acaba de editar essa célula (por exemplo, quando você sai dessa célula e vai editar outra, ou dá um TAB ou um ENTER). Mas nenhuma dessas coisas se resolve exatamente desse jeitino que você quer resolver as coisas na marra. Como disse, Swing != .NET e Delphi.
[/quote]
É mesmo ??? e qual é o jeito certo ???
Breve explicação…
Desenvolvi um sistema de NFe em Delphi, estou migrando agora para Java para ficar mais compatível com diversos sistemas… enfim tenho um parte que é “Criar NFe” no qual tenho uma tabela que contém todos os itens… Em Delphi tenho um evento keypress que quando começo a digitar o nome do produto dentro da celula (nome) da tabela itens da nota, aparece uma listagem com os produtos correspondentes ao que foi digitado ate o momento…ex : digitei ‘M’ apareceu um listagem: ‘MICRO, MONITOR, MASTERPAD…etc’ digitei ‘MO’ a listagem mudar para ‘MONITOR’… fiz dessa forma para facilitar a vida do cliente, poderia simplesmente abrir mais uma tela e ai sim o cliente selecionar o produto, mas estou pensado em facilitar a vida do cliente…entendi.?.. Porém em Java o evento keypress não funciona quando estou digitando dentro da célula…
[quote=lina]Oi,
1- Crie um JTextField ou qualquer componente de texto;
2- Recebe a coluna que você quer adicionar o KeyPress;
2- Adicione nessa coluna um JTextField;
3- Adicione o evento de teclado neste JTextField;
Código:
// Criando meu componente de texto
JTextField textfield = new JTextFiel......
// Recebendo a coluna 1.
TableColumn
lo_column = tabela.getColumnModel().getColumn(1);
// Adicionando a coluna um componente de texto
lo_column.setCellEditor(new TableColumnTextComponent(textfield));
// Adiciona um KeyListener para o seu componente de texto
textfield.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent evt) {}});
Inner-class TableColumnTextComponent
/**
Componente de texto para a JTable.
*/
private class TableColumnTextComponent extends DefaultCellEditor
{
public TableColumnTextComponent(JTextField ao_component) {
super(ao_component);
}
}
Tchauzin![/quote]
Obrigado Lina…vlw pela dica vou testar aqui =)
Apoio a resposta da Lina, apesar do nosso amigo ter descartado quando citei la encima…
que nada.heeh … na verdade como eu vi que não tem tanta opção assim… o jeito é fazer dessa forma mesmo…ou então criar um outro form para adicionar produtos no jtable, o que eu não queria…mas fazer oq…vlw pela dica parceiro… =)
Já que vc está estudando componentes veja essas opções, pode te interessar…
t+
Favor, não editar o título com NÃO RESOLVIDO. Fazer o inverso de anotar RESOLVIDO não fará com que a ajuda chegue mais rápido, e acaba por poluir o forum com informação desnecessária.
JTable, na minha opinião, é o calcanhar de aquiles do Swing. É o componente que, para ser mais funcional, deve ter muita implementação. Algo que não chega a ser muito necessário nos demais componentes.
Mas, se não me engano, os listeners devem ser adicionados em teu tableModel.