如何在选择其他jList时更新jList

时间:2014-02-19 16:03:30

标签: java swing actionlistener jlist

我正在尝试制作一个jList,当另一个项目在另一个jList上被选中时,该lstProperty会更新。当从lstLandLord中选择一个属性,然后MouseListener显示房东,但我希望能够更新它而无需按下按钮。 任何人都可以帮忙使用这段代码吗?

尝试:

jList

上实施 public void showLandLordFromProperty() throws SQLException{ conn = SingletonDatabase.connectDatabase(); Property p; p = (Property) lstProperty.getSelectedValue(); int landlord_id = p.getLandlord_id(); LandLord l = new LandLord(); String sql = ("SELECT * FROM LANDLORD WHERE LANDLORD_ID =" + landlord_id); PreparedStatement statement = conn.prepareStatement(sql); ResultSet rs = statement.executeQuery(); if(rs.next()){ String forename = rs.getString("FORENAME"); String surname = rs.getString("SURNAME"); displayLandLords.addElement(l.getName(forename, surname)); } lstLandLord.setModel(displayLandLords); }

以下是更新列表

的方法的代码
  lstLandLord.addMouseListener(new MouseAdapter(){
        @Override
        public void mouseClicked(MouseEvent e){
                try {
        showLandLordFromProperty();
    } catch (SQLException ex) {
        Logger.getLogger(HomePage.class.getName()).log(Level.SEVERE, null, ex);
    }

这是动作监听器

{{1}}

1 个答案:

答案 0 :(得分:1)

  

“我正在尝试创建一个jList,当在另一个jList上选择另一个项目时,该jList应该更新。”

您不应该尝试使用MouseListener。正如Sean Bright所指出的那样,正确的倾听者是ListSelectionListener

  

只要选择发生变化,列表就会触发列表选择事件。您可以使用addListSelectionListener方法向列表中添加ListSelectionListener来处理这些事件。列表选择侦听器必须实现一个方法:valueChanged

下面可以测试一个简单的实现。

您还可以在How to Use ListsHow to Write ListSelectionListeners

上查看更多内容
import java.awt.Dimension;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class DynamicList {

    public DynamicList() {
        JList list1 = createList();
        final JList list2 = new JList(new DefaultListModel());
        list1.addListSelectionListener(new ListSelectionListener(){
            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (e.getValueIsAdjusting()) {
                    JList list = (JList)e.getSource();
                    String item = (String)list.getSelectedValue();
                    DefaultListModel model = (DefaultListModel)list2.getModel();
                    model.addElement(item);
                }
            }  
        });
        JPanel panel = new JPanel();
        JScrollPane pane1 = new JScrollPane(list1);
        pane1.setPreferredSize(new Dimension(150, 200));
        JScrollPane pane2 = new JScrollPane(list2);
        pane2.setPreferredSize(new Dimension(150, 200));
        panel.add(pane1);
        panel.add(pane2);
        JFrame frame = new JFrame("List");
        frame.add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new DynamicList();
            }
        });
    }

    private JList createList() {
        DefaultListModel<String> model = new DefaultListModel<>();
        JList list = new JList(model);
        for (int i = 0; i < 15; i++) {
            model.addElement("Hello" + i);
        }
        return list;
    }
}