2012-01-19 35 views
-1

我想添加侦听器到jlist。但项目会动态添加到jlist。 所以我不能注册监听。 和事件不起火。 可以any1帮我吗? plzz联系我,如果你有任何例子。 我的电子邮件ID [email protected]
这里是我的代码:

JList - ListSelectionListener

DefaultListModel f=new DefaultListModel(); 
DefaultListModel sf=new DefaultListModel(); 

public Jlistdemo() { 
    initComponents(); 

    System.out.println("hi"); 
    for(int i=0;i<10;i++) 
    { 
     f.addElement("hello"+i); 
     //System.out.println("helloo"+i); 
    } 
    fields=new JList(f); 
    jScrollPane1.setViewportView(fields); 

} 


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

    jScrollPane1 = new javax.swing.JScrollPane(); 
    fields = new javax.swing.JList(); 
    jScrollPane2 = new javax.swing.JScrollPane(); 
    sel_fields = new javax.swing.JList(); 
    jButton1 = new javax.swing.JButton(); 
    jButton2 = new javax.swing.JButton(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    fields.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 
    jScrollPane1.setViewportView(fields); 

    sel_fields.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 
    sel_fields.addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
     public void valueChanged(javax.swing.event.ListSelectionEvent evt) { 
      sel_fieldsValueChanged(evt); 
     } 
    }); 
    jScrollPane2.setViewportView(sel_fields); 

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

    jButton2.setText("<"); 
    jButton2.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton2ActionPerformed(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(40, 40, 40) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING) 
       .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING)) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(91, 91, 91)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
       .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createSequentialGroup() 
         .addGap(31, 31, 31) 
         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGroup(layout.createSequentialGroup() 
         .addGap(60, 60, 60) 
         .addComponent(jButton1) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jButton2)))) 
      .addContainerGap(68, Short.MAX_VALUE)) 
    ); 

    pack(); 
} 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    if(fields.getSelectedValue()!=null) 
    { 
     int i=fields.getSelectedIndex(); 

     sf.addElement(fields.getSelectedValue()); 
     f.removeElement(fields.getSelectedValue()); 
     sel_fields=new JList(sf); 
     sel_fields.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     jScrollPane2.setViewportView(sel_fields); 
     fields.setSelectedIndex(i); 
     jScrollPane2.revalidate(); 
     jScrollPane2.repaint(); 
    } 
} 

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    if(sel_fields.getSelectedValue()!=null) 
    { 
     int i=sel_fields.getSelectedIndex(); 
     f.addElement(sel_fields.getSelectedValue()); 
     sf.removeElementAt(sel_fields.getSelectedIndex()); 
     sel_fields.setSelectedIndex(i); 
    } 

} 

private void sel_fieldsValueChanged(javax.swing.event.ListSelectionEvent evt) { 
     System.out.println("fired"); 
} 
public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 

     public void run() { 
      new Jlistdemo().setVisible(true); 
     } 
    }); 
} 

private javax.swing.JList fields; 
private javax.swing.JButton jButton1; 
private javax.swing.JButton jButton2; 
private javax.swing.JScrollPane jScrollPane1; 
private javax.swing.JScrollPane jScrollPane2; 
private javax.swing.JList sel_fields; 
+0

欢迎来到SO :-)请注意,问题和答案预计将在这里公开。不要指望任何人私下_send_你的任何代码(如果那是你想要的,考虑聘请顾问:-) BTW:ANY1不是一个英文单词据我所知,和粘问号可能被视为喊... – kleopatra

回答

2

的错误是在你的构造以下行:

fields = new JList(f) 

与你更换名单即在的initComponents

+0

乌尔仪式....我发现错误....! thnk你...! – unknown

0

你从添加数据分离列表的创建创建。

,你不需要跟踪选定字段,列表会为你做的。

加,更好的名称将有助于使代码更清晰。

+0

对不起,我没有得到你... Plz解释我...... – unknown

+0

看看教程。从你的编码开始小;直到它工作;然后逐渐增加使其更加复杂。 http://docs.oracle.com/javase/tutorial/uiswing/components/list.html –

+0

我已经检查过它。但我找不到解决方案。你可以在这个程序中找到任何错误或错误......?因为这是我的项目的一个模块。 (报告生成器) – unknown