Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTable -> getSelectedRow() возвращает -1  
:(
    Опции темы
Entwickler
Дата 22.11.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 14.4.2007

Репутация: нет
Всего: 2



Привет всем!!!
У меня возникла проблемка... с JTable а имннно метод getSelectedRow() постоянно возвращает -1

таблицу получил запросом из ДБ
Код

                    DefaultTableModel tableModel = new DeafaultTableModel();
                    JTable resultTable = new JTable(tableModel);
                    ....................................

                    String sql = "SELECT * FROM personen";
                    ResultSet ergebnis = stm.executeQuery(sql);
                    String name, street, zip, telephon, city = null;
                    while (ergebnis.next() == true) {
                    name = ergebnis.getString("name");
                    street = ergebnis.getString("street");
                    city = ergebnis.getString("city");
                    zip = ergebnis.getString("zip");
                    telephon = ergebnis.getString("telephon");
                    String result[] = {name, street, city, zip, telephon};
                    tableModel.addRow(result);
                }

вот так пытаюсь узнать индекс ROW int row = resultTable.getSelectedRow();  Но постоянно получаю -1!!! А например resultTable.getSelectedColumn() получаю правильно!!!


PM MAIL   Вверх
Entwickler
Дата 22.11.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 14.4.2007

Репутация: нет
Всего: 2



Вот полностью код... если кому интерессно...
Код

import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;

public class DemoDatenbankZugrif extends JFrame {

    private JTextField name = null;
    private JTextField vorname = null;
    private JTextField strasse = null;
    private JTextField ort = null;
    private JTextField plz = null;
    private JTextField telefon = null;
    private JPanel eingabePanel = null;
    private JButton executQuery = null;
    private JButton deleteRow = null;
    private JButton datenLaden = null;
    private JButton exitApplication = null;
    private DefaultTableModel tableModel = null;
    private JTable resultTable = null;

    public DemoDatenbankZugrif() {
        super("Datenbankabfrage Tool: ");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        /***
         * Tabellenmodel initialisieren
         */
        tableModel = new DefaultTableModel();
        tableModel.addColumn("Name");
        tableModel.addColumn("Vorname");
        tableModel.addColumn("Strasse");
        tableModel.addColumn("Ort");
        tableModel.addColumn("PLZ");
        tableModel.addColumn("Telefon");

        /***
         * Eingabefelder initialisieren
         */
        name = new JTextField();
        vorname = new JTextField();
        strasse = new JTextField();
        ort = new JTextField();
        plz = new JTextField();
        telefon = new JTextField();

        /***
         * Buttons zur Steuerung von Ereignissen Initialisieren
         */
        executQuery = new JButton("Excequte Query");
        deleteRow = new JButton("Delete Row");
        datenLaden = new JButton("Load Data");
        exitApplication = new JButton("Exit Application");

        /***
         * Elemente die der Steuerung dienen in die eingabePanel einfuegen.
         */
        eingabePanel = new JPanel(new GridLayout(4, 3));
        eingabePanel.add(new JLabel("Name: "));
        eingabePanel.add(name);
        eingabePanel.add(new JLabel("Vorname: "));
        eingabePanel.add(vorname);
        eingabePanel.add(new JLabel("Strasse: "));
        eingabePanel.add(strasse);
        eingabePanel.add(new JLabel("Ort: "));
        eingabePanel.add(ort);
        eingabePanel.add(new JLabel("PLZ: "));
        eingabePanel.add(plz);
        eingabePanel.add(new JLabel("Telefon: "));
        eingabePanel.add(telefon);
        eingabePanel.add(datenLaden);
        eingabePanel.add(executQuery);
        eingabePanel.add(deleteRow);
        eingabePanel.add(exitApplication);

        /***
         * Tabelle initialisieren.
         */
        resultTable = new JTable(tableModel);
        JScrollPane scrollPane = new JScrollPane(resultTable);
        JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, eingabePanel, scrollPane);

        datenLaden.addActionListener(new myActionGetData());
        executQuery.addActionListener(new myInsertData());
        deleteRow.addActionListener(new myDeleteRow());
        exitApplication.addActionListener(new myExit());

        add(splitPane);
        setVisible(true);
        pack();
    }

    public static void main(String[] args) {
        new DemoDatenbankZugrif();
    }

    class GetData  extends Thread {

        public void run() {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (Exception exception) {
                System.out.println("Error!!!");
                exception.printStackTrace();
            }

            DefaultTableModel tm = (DefaultTableModel) resultTable.getModel();
            tm.getDataVector().removeAllElements();

            Connection verbindung = null;
            String db = "jdbc:mysql://localhost/pvt";
            String user = "root";
            String pwd = "maximus";

            try {
                verbindung = DriverManager.getConnection(db, user, pwd);
                Statement stm = verbindung.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                        ResultSet.CONCUR_READ_ONLY);

                String sql = "SELECT * FROM personen";
                ResultSet ergebnis = stm.executeQuery(sql);
                String name, vorname, strasse, plz, telefon, ort = null;
                while (ergebnis.next() == true) {
                    name = ergebnis.getString("name");
                    vorname = ergebnis.getString("vorname");
                    strasse = ergebnis.getString("strasse");
                    ort = ergebnis.getString("ort");
                    plz = ergebnis.getString("plz");
                    telefon = ergebnis.getString("telefon");
                    String result[] = {name, vorname, strasse, ort, plz, telefon};
                    tableModel.addRow(result);

                }

            } catch (SQLException sqlExcepltion) {
                System.out.println("Error!!!");
                sqlExcepltion.printStackTrace();
            }
        }
    }

    class myActionGetData implements ActionListener {

        public void actionPerformed(ActionEvent actionEvent) {
            try {
                new GetData().start();
            } catch (Exception exception) {
                System.out.println("Error!!!");
            }
        }
    }

    class setDataInDB extends Thread {

        public void run() {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException classNotFoundException) {
                System.out.println("Error!!! Class not found!!!");
                classNotFoundException.printStackTrace();
            }

            Connection verbindung = null;
            String db = "jdbc:mysql://localhost/pvt";
            String user = "root";
            String pwd = "maximus";

            try {
                verbindung = DriverManager.getConnection(db, user, pwd);
                Statement stm = verbindung.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

                String sql = "INSERT INTO personen (name,vorname,strasse,ort,plz,telefon)" +
                        " VALUES('" + name.getText() + "','" + vorname.getText() + "','" + strasse.getText() + "','" + ort.getText() + "','" + plz.getText() + "','" + telefon.getText() + "');";

                int r = stm.executeUpdate(sql);

                System.out.println(sql);

                new GetData().start();

            } catch (Exception exception) {
                System.out.println("Error by execute SQL Query!!!");
                exception.printStackTrace();
            }
        }
    }

    class myInsertData implements ActionListener {

        public void actionPerformed(ActionEvent actionEvent) {
            try {
                new setDataInDB().start();
            } catch (Exception exception) {
                System.err.println("Error!!! ");
                exception.printStackTrace();
            }
        }
    }

    class myDeleteRow implements ActionListener {

        public void actionPerformed(ActionEvent actionEvent) {
            try {
                tableModel.removeRow(resultTable.getSelectedRow());
            } catch (Exception exception) {
                System.out.println("Error by row deleting");
            }
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (Exception exception) {
                System.err.println("Error by loading the Driver!");
            }

            Connection verbindung = null;
            String db = "jdbc:mysql://localhost/pvt";
            String user = "root";
            String pwd = "maximus";

            try {
                verbindung = DriverManager.getConnection(db, user, pwd);
                Statement stm = verbindung.createStatement();
                //String name_ = (String) tableModel.getValueAt(resultTable.getSelectedRow(), resultTable.getSelectedColumn());
                //String name_ = tableModel.getValueAt(resultTable.getSelectedRow(), resultTable.getSelectedColumn());
                /*String vorname = (String) tableModel.getValueAt(resultTable.getSelectedRow(), resultTable.getSelectedColumn());
                String strasse = (String) tableModel.getValueAt(resultTable.getSelectedRow(), resultTable.getSelectedColumn());
                String ort = (String)tableModel.getValueAt(resultTable.getSelectedRow(), resultTable.getSelectedColumn());*/
                //String sql = "DELETE FROM personen WHERE vorname='" + name_ + "';";
                        //"" +"'AND vorname='" + vorname + "'AND string='" + strasse +
                        //"'AND ort='" + ort +"';";

                //int r = stm.executeUpdate(sql);
                int row = resultTable.getSelectedRow();
                int col = resultTable.getSelectedColumn();
                System.out.println("Row: " + row + " / Column: " + col);
            } catch (Exception exception) {
                System.err.println("Error!!!");
                exception.printStackTrace();
            }

        }
    }

    class myExit implements ActionListener {

        public void actionPerformed(ActionEvent actionEvent) {
            System.exit(0);
        }
    }
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.2010 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.