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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> собственная модель TableModel, ширина столбцов и их наименований в JTAB 
:(
    Опции темы
kresh
  Дата 11.2.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет! 





Подскажите как правильно использовать данную модель применительно к тому, что сама таблица JTABLE СОЗДАВАЛАСЬ в визуальном режиме( и как я понял в данной таблице на форме, используется DefaultTableModel с хранением информации о таблице в векторах) и чтобы JTABLE на форме остался в этом же виде после заполнения данными из БД. smile 

вот код  

вызова 

Код

 private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
  iso="iso4217";
  
        try {

           
          
            Class.forName("com.mysql.jdbc.Driver");


            String url =
                    "localhost:3306/baseratename"; 

            String user =
                    "root"; 

            String password =
                    "1980"; 

            String query ="SELECT * FROM iso4217;"; //your data
          

            Connection con =
                    DriverManager.getConnection("jdbc:mysql://" + url,
                    user,
                    password);


            Statement st =
                    con.createStatement();


            ResultSet rs =
                    st.executeQuery(query);


            DatabaseTableModel model =new DatabaseTableModel();
            
 jTable3.setModel(model);  // вызываю свою модель см прикрепл файл

        
            model.setDataSource(rs);
        } catch (SQLException ex) {
            Logger.getLogger(GuideRate.class.getName()).
                    log(Level.SEVERE,
                    null,
                    ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GuideRate.class.getName()).
                    log(Level.SEVERE,
                    null,
                    ex);
        }
  

Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package exchangeratev3011108;

/**
 *
 * @author Kukresh_Family
 */
  
  
import java.util.*;   
  
import java.sql.*;   
  
  
import java.awt.*;   
  
  
import javax.swing.table.*;   
  
  
import javax.swing.*;   

import java.util.*;   
  
  
import java.sql.*;   
  
  
import java.awt.*;   
  
  
import javax.swing.table.*;   
  
  
import javax.swing.*;   
  
  
  
  
  
public class DatabaseTableModel extends AbstractTableModel {
    private static String iso1;
  
  
    private static final long serialVersionUID = 1L;   
  
  
    private ArrayList<String> columnNames = new ArrayList<String>();   
  
  
    private ArrayList<Class> columnTypes = new ArrayList<Class>();   
  
  
    private ArrayList data = new ArrayList();

  
  
    public int getRowCount() {   
  
  
        synchronized (data) {   
  
  
            return data.size();   
  
  
        }   
  
  
    }   
  
  
  
  
  
    public int getColumnCount() {   
//  columnNames.size();
  
  
        return (columnNames.size());   
  
  
    }   
  
  
  
  
  
    public Object getValueAt(int row, int col) {   
  
  
        synchronized (data) {   
  
  
            return ((ArrayList) data.get(row)).get(col);   
  
  
        }   
  
  
    }   
  
  
  
  
  
    @Override
    public String getColumnName(int col) {   
String namecol1= columnNames.get(col);

    
      return  namecol1;
    
    
    }
  
  
  
  
  
    @Override
    public Class getColumnClass(int col) {   
  
  
        return columnTypes.get(col);   
  
  
    }   
  
  
  
  
  
    public boolean isEditable() {   
  
  
        return true;   
  
  
    }   
  
  
  
  
  
    @Override
    public void setValueAt(Object obj, int row, int col) {   
  
  
        synchronized (data) {   
  
  
            ((ArrayList) data.get(row)).set(col, obj);   
  
  
        }   
  
  
    }   
  
  
  
  
  
    /**  
 
 
     * Core of the model. Initializes column names, types, data from ResultSet.  
 
 
     *  
 
 
     * @param rs ResultSet from which all information for model is token.  
 
 
     * @throws SQLException  
 
 
     * @throws ClassNotFoundException  
 
 
     */   
  
  
    public void setDataSource(ResultSet rs) throws SQLException, ClassNotFoundException {   
  
  
        ResultSetMetaData rsmd = rs.getMetaData();   
  
  
      columnNames.clear();   
  
  
       columnTypes.clear();   
  
  
        data.clear();   
  
  
  
  
  
        int columnCount = rsmd.getColumnCount();   
  
  
        for (int i = 0; i < columnCount; i++) {   
  
  
            columnNames.add(rsmd.getColumnName(i + 1));   
  
  
            Class type = Class.forName(rsmd.getColumnClassName(i + 1));   
  
  
            columnTypes.add(type);   
  
  
        }   
  
  
        fireTableStructureChanged();   
  
  
        while (rs.next()) {   
  
  
            ArrayList rowData = new ArrayList();   
  
  
            for (int i = 0; i < columnCount; i++) {   
  
  
                if (columnTypes.get(i) == String.class)   
  
  
                    rowData.add(rs.getString(i + 1));   
  
  
                else   
  
  
                    rowData.add(rs.getObject(i + 1));   
  
  
            }   
  
  
            synchronized (data) {   
  
  
                data.add(rowData);   
  
  
                this.fireTableRowsInserted(data.size() - 1, data.size() - 1);   
  
  
            }   
  
  
        }   
  
  
    }

   
   }
  
  
  
  
  
    //***TEST***   
  
  
   

 smile 


Это сообщение отредактировал(а) kresh - 11.2.2009, 19:43

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  new_1 3,77 Kb
--------------------
Спросит вас продавец в магазине формулу Гаусса-Остроградского... А вы ее не знаете!
PM MAIL   Вверх
skif18
Дата 13.2.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 17.5.2007
Где: Молдова, Кишинев

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



Код

jTable.getColumnModel().getColumn(0).setPreferredWidth(20);

Ширина столбца.


--------------------

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0436 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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