首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义按下按钮时的listModel

定义按下按钮时的listModel
EN

Stack Overflow用户
提问于 2012-07-12 17:47:11
回答 2查看 105关注 0票数 0

所以我正在编写一个包含这段代码的程序

代码语言:javascript
复制
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中的元素提供给它。这段代码中有什么错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-12 18:40:02

除了SQL问题之外,您还试图重新分配一个final变量。您应该将listModel设置为字段(实例变量),而不是最终的局部变量,以便您的actionListener可以访问和更改它。

而不是

代码语言:javascript
复制
public class YourClassName {
  public ? yourMethodName() {
    final ListModel listModel = new DefaultListMode();
    JButton btnBuscar = new JButton("Buscar");
    ...

你会写下

代码语言:javascript
复制
public class YourClassName {
  private ListModel listModel = new DefaultListModel();
  public ? yourMethodName() {
    JButton btnBuscar = ...
票数 0
EN

Stack Overflow用户

发布于 2012-07-12 18:33:33

请阅读JDBC(TM) Database Access

  • try examples

快捷方式,例如

代码语言:javascript
复制
    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  
        }
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11449193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档