0

だから私はこのコードのチャンクを含むプログラムを作っています

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内の要素を指定します。このコードの何が問題になっていますか?

4

2 に答える 2

2

たとえば、ショートカット

    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  
        }
    }
于 2012-07-12T10:33:32.813 に答える
0

SQL の問題とは別に、final変数を再割り当てしようとしています。listModelactionListener がアクセスして変更できるように、最終的なローカル変数の代わりにフィールド (インスタンス変数)を作成する必要があります。

それ以外の

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-12T10:40:02.143 に答える