gpt4 book ai didi

java - 当选择其他jList时如何更新jList

转载 作者:行者123 更新时间:2023-12-01 13:24:00 25 4
gpt4 key购买 nike

我正在尝试创建一个jList,当在不同的jList上选择另一个项目时,它应该更新。当从lstProperty中选择属性时,lstLandLord会显示房东,但我希望能够在不按按钮的情况下更新它。任何人都可以帮忙编写此代码吗?

尝试过:

jList 上实现 MouseListener

这是更新列表的方法的代码

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

}

这是 Action 监听器

  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);
}

最佳答案

"I am trying to make a jList which should update when another item is selected on a different jList. "

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

the list fires list selection events whenever the selection changes. You can process these events by adding a ListSelectionListener to the list with the addListSelectionListener method. A list selection listener must implement one method: valueChanged

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

您还可以在How to Use Lists查看更多信息和 How 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;
}
}

关于java - 当选择其他jList时如何更新jList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com