Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JTable обновить / 4 сообщений из 4, страница 1 из 1
15.06.2007, 16:33:35
    #34598466
XiPoMaHt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTable обновить
У меня есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 public    void  UpdateTable(JTable table,String query)  throws  RemoteException,SQLException
 	{       try  {
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
             int  row =  0 ;
             while  (rs.next()) {
                table.setValueAt(rs.getString("name"), row,  0 );
                table.setValueAt(rs.getString("gr"), row,  1 );
                table.setValueAt(rs.getString("mark"), row,  2 );
                row++;
            }
             for  ( int  i = row; i < table.getModel().getRowCount(); i++) 
            	{
                table.setValueAt("", i,  0 );
                table.setValueAt("", i,  1 );
                table.setValueAt("", i,  2 );
            	}
            stmt.close();
        }
         catch  (SQLException e) {
            e.printStackTrace();
        }
        table.repaint();
 	}        

я вызываю
Код: plaintext
1.
2.
3.
 final  JTable MTable =  new  JTable ( 25 , 6 );
UpdateTable(MTable,"select * from Sklad..t");
MTable.repaint();
Что я не правильно делаю подскажите пожалуйсто)))
...
Рейтинг: 0 / 0
15.06.2007, 17:35:27
    #34598710
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTable обновить
для создания таблицы не используй ее напрямую. Пользуйся моделью таблицы.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
 import  java.sql.ResultSet;
 import  java.sql.ResultSetMetaData;
 import  java.sql.SQLException;
 import  java.sql.SQLWarning;
 import  java.util.Vector;

 import  javax.swing.JTextArea;
 import  javax.swing.table.DefaultTableModel;

/**
 * Этот класс предназначен для реализации модели таблицы
 * 
 * @author admin
 * 
 */
 public   class  DefaultReplyTableModel  extends  DefaultTableModel {
	 private  ResultSetMetaData rsmd =  null ;

	 private  ResultSet resultSet =  null ;

	Vector data =  this .getDataVector();

	 private  Vector headers =  null ;


	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.swing.table.DefaultTableModel#getColumnName(int)
	 */

	@Override
	 public  String getColumnName( int  column) {
		 return   super .getColumnName(column);
	}

	/**
	 * этот метод самостоятельно создает ResultSet согласно query и данному
	 * подключению. ResultSet будет иметь свойства:
	 * ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE
	 * 
	 * @param connection
	 * @param query
	 */
	 public   void  performResultSet(java.sql.Connection connection, String query) {
		 boolean  stay = false;
		java.sql.Statement statement =  null ;

		 try  {
			statement = connection.createStatement(
					ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_UPDATABLE);
			stay = statement.execute(query.toString());
			
			 if  (stay) {
				performResultSet(statement.getResultSet());
			}  else  {
				createDatabaseReplay(statement.getUpdateCount());
			}

		}  catch  (SQLException e) {
			performSQLException(connection, e);
		}
	}

	/**
	 * этот метод вызывается если результат выполнения sql-запроса есть
	 * resultSet таблица
	 * 
	 * @param resultSet
	 */
	 public   void  performResultSet(ResultSet resultSet) {
		 this .resultSet=resultSet;
		 int  columnCountOfResultSet =  0 ;
		data.clear();
		 try  {
			rsmd =  this .resultSet.getMetaData();
			columnCountOfResultSet = rsmd.getColumnCount();

			// создадим заголовки
			headers =  new  Vector(columnCountOfResultSet);
			 for  ( int  columnInd =  0 ; columnInd < columnCountOfResultSet; columnInd++)
				headers.add(rsmd.getColumnName(columnInd +  1 ));

			 if  (getRowCount() ==  0 ) {

				 int  ind =  1 ;

				Vector row =  null ;
				Object obj =  null ;
				 while  ( this .resultSet.next()) {
					row =  new  Vector();
					 for  ( int  i =  1 ; i <= columnCountOfResultSet; i++) {
						obj =  this .resultSet.getObject(ind++);
						row.add(obj);
					}
					ind =  1 ;
					data.add(row);
					row =  null ;
				}
			}

			setDataVector(data,  this .headers);
			 this .fireTableDataChanged();
		}  catch  (SQLException e) {
			// pearent.errorTextArea.append(e.getMessage());
			// e.printStackTrace();
		}  catch  (Exception e) {
			e.printStackTrace();
		}
	}

	 public   void  createDatabaseReplay( int  numUpdates) {
		headers =  new  Vector( 1 );
		headers.add("Replay");

		data.clear();
		Vector row =  new  Vector( 1 );
		row.add("Ok. " + numUpdates + " rows affected.");
		data.add(row);
		 this .setDataVector(data, headers);
		 this .fireTableDataChanged();
	}

	/**
	 * этот метод обрабатывает ошибку и отражает результат работы в таблице
	 * (через модель)
	 * 
	 * @param exp
	 */
	 public   void  performSQLException(java.sql.Connection connection,
			SQLException exp) {
		SQLWarning sqlWarning;
		SQLException sqlExp = exp;
		String warning =  null ;
		Vector row =  null ;

		headers =  new  Vector( 1 );
		headers.add("Error by query execution");
		data.clear();
		 try  {
			 for  (sqlWarning = connection.getWarnings(); sqlWarning !=  null ; sqlWarning = sqlWarning
					.getNextWarning()) {
				row =  new  Vector();
				warning = (warning ==  null  ? "" : warning) + "WARNING: "
						+ sqlWarning.getMessage() + ":"
						+ sqlWarning.getSQLState() + "\n";
				row.add(warning);
				data.add(row);
			}

			// === обработка ошибок ===
			 while  (sqlExp !=  null ) {
				row =  new  Vector();
				row.add(sqlExp.getMessage());
				data.add(row);
				sqlExp = exp.getNextException();
			}
			// === удалим старые сообщения ===
			connection.clearWarnings();
		}  catch  (SQLException e) {
			e.printStackTrace();
		}

		 this .setDataVector(data, headers);
		 this .fireTableDataChanged();
	}
	
	/**
	 * метод возвращает сформированный resultSet
	 * @return
	 */
	 public  ResultSet getResultSet(){
		 return  resultSet;
	}

	 public  Vector getHeaders() {
		 return  headers;
	}

}


обрати внимание на метод performResultSet(). Там как раз и вытаскиваются данные из базы.
Это живой код. На основе него можеш создать свою таблицу

Код: plaintext
1.
JTable table= new  JTable();
table.setModel( new  DefaultReplyTableodel);
...
Рейтинг: 0 / 0
15.06.2007, 18:19:11
    #34598835
XiPoMaHt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTable обновить
Че та я вообще запутался)))
Мне нужно передать запрос на сервет и вернуть на клиента))
Я все реализовал тока никак не могу реализовать отображение таблицы)))
На клиент я возращаю у же саму Jtable может это не верно,подскажите))
...
Рейтинг: 0 / 0
15.06.2007, 19:00:09
    #34598915
XiPoMaHt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTable обновить
Спасиб всем за помошь))
Все получилось))
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JTable обновить / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]