Problema com evento Mouse Clicked em um List no windows 7

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 . . .

vlw galera . . .

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):


package validadores;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;

public class NadaAverJLIst extends JFrame implements ActionListener{
	
	private JList list;
	private JScrollPane spList;
	private JButton bMagica;
	
	public NadaAverJLIst (){
		list = new JList();
		list.setPreferredSize(new Dimension (100,100));
		
		bMagica = new JButton("Mágica");
		bMagica.addActionListener(this);
		
		this.add("North", list);
		this.add("South", bMagica);
		
		setVisible(true);
		pack();
	}
	
	public void actionPerformed(ActionEvent arg0) {
		if(arg0.getSource() == bMagica){
			list.setVisible(!list.isVisible());
		}
	}
	
	public static void main(String[] args) {
		new NadaAverJLIst();
	}
	

}

Talvez você precise dar uma forçada, chamando os métodos validate() e repaint() do Jframe. Espero ter ajudado.

Juba

cara aqui não funciona, vou enviar o jar com esse exemplo . . .

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.

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "FORTALEZA", "CEARÁ", "CRICIUMA", "SÃO PAULO", "SANTOS" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane1.setViewportView(jList1);

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.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>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        jList1.setVisible(!jList1.isVisible());
    }
    public static void main(String[] args) {
   new NewJFrame().setVisible(true);
}
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JList jList1;
    private javax.swing.JScrollPane jScrollPane1;
    // 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 . . .

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 . . .

agora vou testar a questão do evento . . .