Classe em java popmenu nao funciona quando aperta o enter

8 respostas
A

estou iniciando em java, e estou com problema para fazer uma classe para trabalhar com jpoupmenu no net beans 6.8 tenho um banco sql puxo as informações na hora de selecionar so funciona com o mouse nao estou conseguindo enclementar o enter ai vai
a classe

import javax.swing.JPopupMenu;

import javax.swing.JTextField;

import java.sql.<em>;

import java.awt.event.KeyEvent;

import java.awt.event.MouseEvent;

import javax.swing.JOptionPane;

/</em>
  • PopMenu.java
  • Created on 5 de Outubro de 2010, 08:08
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

/**
*

  • @author julio cesar gavilan
    */
    public class PopMenu {
public static void pop(JPopupMenu JPMNome,final JTextField JTFNomeCliente,KeyEvent evt,String sql,String NomeTabela){

String ProgNome = “TimeFrota - pontualidade nosso lema”;

Connection con;

Statement stmt = null;

ResultSet rs;

stmt = BDConexao.getEnviar(ProgNome);

if(evt.getKeyCode()!=KeyEvent.VK_DOWN && evt.getKeyCode()!=KeyEvent.VK_UP ){

JPMNome.removeAll();

JPMNome.setVisible(false);

try {

rs = stmt.executeQuery(sql);

while (rs.next()) {

final String nome = rs.getString(NomeTabela);
JPMNome.add(nome).addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

JTFNomeCliente.setText(nome);

}

public void actionPerformed(java.awt.event.KeyEvent evt) {

if(evt.KEY_TYPED == KeyEvent.VK_ENTER)

JTFNomeCliente.setText(nome);

}

});
}

} catch (SQLException e) {

JOptionPane.showMessageDialog(null,“erro de sql”+e.getMessage(),ProgNome,JOptionPane.ERROR_MESSAGE);

}

JPMNome.show(evt.getComponent(),(int)JTFNomeCliente.getAlignmentX() , (int)JTFNomeCliente.getAlignmentY()+20);

JTFNomeCliente.requestFocus();

}

}

}

8 Respostas

L

Fera é o seguinte,
o JPopupMenu geralmente ele possui um JMenuItem dentro
e é no JMenuItem que você deve adicionar o Evento…

Ex:

JPopupMenu popup = new JPopupMenu();
JMenuItem jmenuItem = new JMenuItem();
popup.add(jmenuItem );

// eh no jmenuItem que voce deve adicionar o evento
jmenuItem.addKeyListener.... .... ....

ACHO… acho que o problema deve ser este…

dependendo do componente que vc adicionar no JPopupMenu… eh o componente que vc adicionar que deve adicionar o evento…

aahh… e se vc deseja efetuar uma ação com o enter

utiliza o evento KeyListener… e nao o actionListener…

acho que eh por ai a solução… hehe

abraço

A

cara nao compreendi eu faço esse codigo na clase ou no proprio codigo do programa
fiz na classe nao de u certo
JPMNome.add(nome).addKeyListener(new java.awt.event.KeyListener() {

public void KeyReleased(java.awt.event.KeyEvent evt) {
                        if(KeyEvent.VK_ENTER == evt.getKeyCode())
                        JTFNomeCliente.setText(nome);
                }

                    public void keyTyped(KeyEvent evt) {
                        throw new UnsupportedOperationException("Not supported yet.");
                    }

                    public void keyPressed(KeyEvent evt) {
                        throw new UnsupportedOperationException("Not supported yet.");
                    }

                    public void keyReleased(KeyEvent evt) {
                        throw new UnsupportedOperationException("Not supported yet.");
                    }
               });
            }
ViniGodoy

Por favor, siga essas dicas:
http://www.guj.com.br/posts/list/50115.java

Movido para o fórum de interface gráfica.

ViniGodoy

O KeyListener raramente é útil para qualquer coisa.

Só mova o evento para o JMenuItem, e deixe no ActionListener mesmo. Já deve funcionar.

A

sou novo em java nâo estou conseguindo acompanhar o racicionio como eu faço para fazer essa mudança
como implementar o jmenuitem nesta classe .

A

peço descupas pela a minha ignorancia…
se alguem poder me enssinar com fazer oque o companheiro ai falou me mostra com pois ainda nao consegui sair do problema

A

mano é o seguinte
estou tentando implementar um sistema de pesquisa parecido com o do google onde voce vai digitando o nome e ele vai aparecer uma lista em baixo

http://img189.imageshack.us/img189/139/fffdv.jpg

o problema é que quando eu aperto enter ele nao fuciona ;
nem o action perfomed nao da certo

alquem poderia me dar alguma sujestao?

ViniGodoy

Você pode usar o AutoCompleteCombobox:
http://www.guj.com.br/posts/list/100120.java#539960

Que por sua vez usa o AutoComplete do SwingX:
http://wiki.java.net/bin/view/Javadesktop/SwingLabsSwingX#Downloads

Criado 28 de outubro de 2010
Ultima resposta 4 de nov. de 2010
Respostas 8
Participantes 3