我正在尝试制作一个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}}
答案 0 :(得分:1)
“我正在尝试创建一个jList,当在另一个jList上选择另一个项目时,该jList应该更新。”
您不应该尝试使用MouseListener
。正如Sean Bright所指出的那样,正确的倾听者是ListSelectionListener
。
只要选择发生变化,列表就会触发列表选择事件。您可以使用
addListSelectionListener
方法向列表中添加ListSelectionListener
来处理这些事件。列表选择侦听器必须实现一个方法: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;
}
}