Получение данных из JTable - PullRequest
       2

Получение данных из JTable

1 голос
/ 05 февраля 2012

Я пытаюсь получить данные из таблицы на Java.Я был в состоянии получить данные, но когда они выводятся, они объединяются самостоятельно.Если данные «admin», вывод «adminadmin».Ниже приведен код.Может кто-нибудь сказать мне, в чем проблема?

package sample;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.sql.*;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import net.proteanit.sql.DbUtils;

public class Table extends JFrame{
    JTable table;
    Connection conn = null;
    ResultSet rs = null;
    PreparedStatement pst = null;

    private int row;
    private String name, status;

    private void connect(){
        conn = myconnection.ConnectDb();
    }


    public void mouseClicked(MouseEvent e) {
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
        int sel = table.getSelectedRow();
        name = table.getModel().getValueAt(sel, 0).toString();
        System.out.print(name);
    }
});
    }

    private void UpdateJTable(){

        String sql = "select firstname, status from tblmember";

        try{
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            table.setModel(DbUtils.resultSetToTableModel(rs));
        }
        catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
    }


    public Table(){
        setLayout(new FlowLayout());

        String [] columnName={"Name", "Status"};
        Object [][] data={
            {null, null},
            {null, null}
        };

        table = new JTable(data, columnName);
        table.setPreferredScrollableViewportSize(new Dimension(400,50));
        table.setFillsViewportHeight(true);

        JScrollPane sp = new JScrollPane(table);
        add(sp);
    }

    public static void main(String[] args){
        Table gui = new Table();

        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setSize(700, 500);
        gui.setVisible(true);
        gui.setTitle("AAAAAAAA");
        gui.connect();
        gui.UpdateJTable();
        gui.mouseClicked(null);

    }
}

1 Ответ

5 голосов
/ 05 февраля 2012

Это сцеплено, потому что событие выбора запускается дважды, и вы используете System.out.print() для отображения выбора.

Вы, вероятно, должны игнорировать событие, если его метод getValueIsAdjusting() возвращает true.* Кроме того, будьте осторожны, чтобы возвращаемый индекс выбранной строки не обязательно совпадал с индексом модели таблицы: если ваша таблица отсортирована, оба индекса будут отличаться.Используйте JTable convertRowIndexToModel() перед получением данных от модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...