所以我正在编写一个包含这段代码的程序
final ListModel listModel = new DefaultListModel();
JButton btnBuscar = new JButton("Buscar");
btnBuscar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
listModel = MySQL("SELECT * FROM catalogos WHERE id = '" +
searchField.getText() +
"' OR name LIKE '%" +
searchField.getText() +
"%' OR keywords LIKE '%" +
searchField.getText() + "%'", "SELECT");
}
});
btnBuscar.setBounds(336, 11, 89, 23);
searchPanel.add(btnBuscar);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 44, 316, 185);
searchPanel.add(scrollPane);
JList list = new JList(listModel);
scrollPane.setViewportView(list);如您所见,我创建了一个ListModel变量,然后希望在按下按钮时使用它。函数MySQL返回一个listModel。
然后,我想创建一个列表,并将listmodel中的元素提供给它。这段代码中有什么错误?
发布于 2012-07-12 18:40:02
除了SQL问题之外,您还试图重新分配一个final变量。您应该将listModel设置为字段(实例变量),而不是最终的局部变量,以便您的actionListener可以访问和更改它。
而不是
public class YourClassName {
public ? yourMethodName() {
final ListModel listModel = new DefaultListMode();
JButton btnBuscar = new JButton("Buscar");
...你会写下
public class YourClassName {
private ListModel listModel = new DefaultListModel();
public ? yourMethodName() {
JButton btnBuscar = ...发布于 2012-07-12 18:33:33
请阅读JDBC(TM) Database Access
快捷方式,例如
try {
String sqlSyntax = "SELECT * FROM ........";
Statement stmt = myDbConnection.createStatement();
ResultSet rsts = stmt.executeQuery(sqlSyntax);
while (rsts.next()) {
final String str = rsts.getString(1); // or another data types
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
listModel.add(str.trim());
}
});
}
} catch (SQLException ex) {
// exeption handling
} finally {
try {
rsts.close();
stmt.close();
} catch (SQLException ex) {
// not important
}
}https://stackoverflow.com/questions/11449193
复制相似问题