Problema com evento Mouse Clicked em um List no windows 7
5 respostas
F
flaviomirandadesouza
Pessoal, em meu sistema de caixa, coloquei um JTextField com um evento Key Pressed . . .
ao apertar a tecla, o sistema mostra um List carregando os clientes de acordo com as letras que o usuário vai digitando.
quando o usuário clica no List ele pega o valor selecionado e seta no JTextField e não mostra mais o List “setVisible(false)” . . .
só que no windows 7 não está acontecendo isso, o usuário clica, o List some “setVisible(false)” mas não seta o valor no JTextField . . .
antes de me perguntarem porque estou usando o List do awt e não o JList do swing, é pq o JList não permite o método “setVisible()” ele até tem mas não some da tela o componente, continua mostrando uma borda mesmo eu não setando nenhum tipo de borda para o componente . . .
Oi amigo, se você pudesse disponibilizar o código eu poderia dar uma ajuda melhor. Aqui eu implementei o código abaixo e funcionou perfeitamente no Win7 (pelo menos no Home Premium):
Talvez você precise dar uma forçada, chamando os métodos validate() e repaint() do Jframe. Espero ter ajudado.
Juba
F
flaviomirandadesouza
cara aqui não funciona, vou enviar o jar com esse exemplo . . .
E
entanglement
Evite usar java.awt.List - como você deve ter percebido, alguns detalhes de seu comportamento dependem da versão do sistema operacional e até de update do Java.
F
flaviomirandadesouza
publicclassNewJFrameextendsjavax.swing.JFrame{publicNewJFrame(){initComponents();}@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code">privatevoidinitComponents(){jScrollPane1=newjavax.swing.JScrollPane();jList1=newjavax.swing.JList();jButton1=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jList1.setModel(newjavax.swing.AbstractListModel(){String[]strings={"FORTALEZA","CEARÁ","CRICIUMA","SÃO PAULO","SANTOS"};publicintgetSize(){returnstrings.length;}publicObjectgetElementAt(inti){returnstrings[i];}});jScrollPane1.setViewportView(jList1);jButton1.setText("jButton1");jButton1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton1ActionPerformed(evt);}});javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(111,111,111).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,false).addComponent(jScrollPane1).addComponent(jButton1,javax.swing.GroupLayout.DEFAULT_SIZE,291,Short.MAX_VALUE)).addContainerGap(357,Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(124,124,124).addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jButton1).addContainerGap(292,Short.MAX_VALUE)));pack();}// </editor-fold>privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){jList1.setVisible(!jList1.isVisible());}publicstaticvoidmain(String[]args){newNewJFrame().setVisible(true);}// Variables declaration - do not modifyprivatejavax.swing.JButtonjButton1;privatejavax.swing.JListjList1;privatejavax.swing.JScrollPanejScrollPane1;// End of variables declaration}
cara desculpa mas não da aqui, testei o seu e ta funcionando, será o layout qye vc ta usando ?
desculpa o código grande mas é que usei o netbeans pra agilizar . . .
F
flaviomirandadesouza
cara analisando esse codigo meu postado acima descobri o seguinte, o JList está dentro de um jScrollPane então se eu usar o setVisible() no JScrollPane dá certo, a borda que vemos no print la em cima não é do JList e sim do JScrollPane . . .