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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод полей БД в таблицу при нажатии кнопки 
:(
    Опции темы
tooncheg
Дата 5.12.2014, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



собственно сама таблица, там установлен слушатель на кнопку search от которой я хочу чтобы при ее нажатии выводились нужные строки из БД в мою таблицу.

Код

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;


public class TableMain extends JFrame{

    private  TableModel tm;
    JTextField nameField;
    JTextField dateField;
    
    public TableMain() throws ClassNotFoundException, SQLException  {
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        tm = new TableModel();
        JTable table = new JTable(tm);
        getContentPane().add(new JScrollPane(table));
        JButton search = new JButton("Search");
        JButton remove = new JButton("Delete");
        JButton clear = new JButton("Clear");
        JPanel jpButtons = new JPanel();
        jpButtons.add(search);
        jpButtons.add(remove);
        jpButtons.add(clear);
        
        getContentPane().add(jpButtons, "South");
        
        nameField = new JTextField(20);
        dateField = new JTextField(5);
        JLabel jlabel = new JLabel("Search :");
        JPanel jpTextField = new JPanel();
        jpTextField.add(jlabel);
        jpTextField.add(nameField);
        jpTextField.add(dateField);
        
        
        getContentPane().add(jpTextField,"North");
        
        
        
        remove.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                tm.deleteRow();
             }
        });
        // хочу чтобы при нажатии на кнопку search выводились нужные строки из БД
        search.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                
                if(nameField.getText().trim().length()>0){}
                  
            }
        });
        
        clear.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
              tm.clearAll();
            }
        });
        
        setSize(500, 400);
        setVisible(true);
    }

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        new TableMain();
        
    }
}


модель таблицы

Код

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import javax.swing.table.AbstractTableModel;


public class TableModel extends AbstractTableModel{

     
     List<String> columnNames = Arrays.asList("id","name","year_birth");
     List<Table> data = new ArrayList<>();
     ArrayList<String[]> datatemp;
     Connection conn;
     Table table;
      
     public TableModel() throws ClassNotFoundException, SQLException{
         ConnectJdbc connJ = new ConnectJdbc();
         conn = connJ.getConnection();
         PreparedStatement ps = conn.prepareStatement("SELECT * FROM testBD.new_table");
         
         ResultSet rs = ps.executeQuery();
         while(rs.next()){
           table = new Table(); 
           table.setId_name(rs.getString("id_name"));
           table.setName(rs.getString("name"));
           table.setDate_birth(rs.getString("date_birth"));
          data.add(table);
      }
     }
          
     public void search() throws SQLException, ClassNotFoundException{
        
        
         datatemp = new ArrayList<>();
            for (int i = 0; i < data.size(); i++) {
             datatemp.add(new String[]{data.get(i).getId_name(),data.get(i).getName(),
             data.get(i).getDate_birth()});
         }
           
    } 
 @Override
    public int getRowCount() {
        return data.size();

    }

    @Override
    public int getColumnCount() {
        return columnNames.size();

    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
       return datatemp.get(rowIndex)[columnIndex];

    }

    @Override
    public String getColumnName(int column) {
        return columnNames.get(column);
    }
    
 
    public void setValueAt(String[] data) {
//        this.data.add(data);
        this.fireTableDataChanged();
    }
    
    
    
    public void deleteRow(){
      
      data.remove(getRowCount()-1);
      this.fireTableDataChanged();
    }

    public void clearAll(){
      data.clear();
      this.fireTableDataChanged();
    }
    
}


соединение с базой
Код

 @Override
    public int getRowCount() {
        return data.size();

    }

    @Override
    public int getColumnCount() {
        return columnNames.size();

    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
       return datatemp.get(rowIndex)[columnIndex];

    }

    @Override
    public String getColumnName(int column) {
        return columnNames.get(column);
    }
    
 
    public void setValueAt(String[] data) {
//        this.data.add(data);
        this.fireTableDataChanged();
    }
    
    
    
    public void deleteRow(){
      
      data.remove(getRowCount()-1);
      this.fireTableDataChanged();
    }

    public void clearAll(){
      data.clear();
      this.fireTableDataChanged();
    }
    
    
    
}




Код

public class Table {
  
  private String id_name;
  private String name;
  private String date_birth;
  

    public String getId_name() {
        return id_name;
    }

    public void setId_name(String id_name) {
        this.id_name = id_name;
    }

    public String getName() {
        return name;
    }

    public String getDate_birth() {
        return date_birth;
    }

    public void setDate_birth(String date_birth) {
        this.date_birth = date_birth;
    }

    public void setName(String name) {
        this.name = name;
    }
  
  
}



Добавлено @ 12:52
У самого не получается как я понимаю по такой причине: когда вызываю модель таблицы, то создается эта самая таблица, но она пустая так  данные datatemp заполняются после вызова метода search( ). как решить эту проблемку

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

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

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


 




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


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

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