Добрый день, помогите решить следующую задачу Есть Таблица (Jtable) и дерево(jTree) мне необходимо что бы данные в Jtabel изменялись в соотвествии с выбраным обьектом уровня чилдрен в дереве. -------------- Jtablemodel Код | public class jTabel_t extends AbstractTableModel{ private static final long serialVersionUID = 1L; private String[] ColumnName;//={"Name","x","y"}; private int ColumnCount; private int RowCount; private ArrayList<String> name; private ArrayList<Double> x; private ArrayList<Double> y; /*обьявляем переменную запроса*/ private jSql_qveri qveri;
public int getRowCount(){ return RowCount; }
public int getColumnCount(){ return ColumnCount; } @Override public Object getValueAt(int r,int c){ String str = new String(); try { str= (String) qveri.getColumnValue(c, r) ; } catch (SQLException ex) { Logger.getLogger(jTabel_t.class.getName()).log(Level.SEVERE, null, ex); } return str; }
/** *Передаю значение переменной, количество столбцов * @param c */ public void setColumnCount(int c){ColumnCount=c;} // /** *Передаю значение переменой о количестве строк * @param r */ public void setRowCount(int r){RowCount=r;} /** * * @param c * @return */ @Override public String getColumnName(int c){ // String st =""+c+""; return ColumnName[c]; } public void setRowValue(ArrayList<String> name,ArrayList<Double> x,ArrayList<Double> y){ this.name=name; this.x=x; this.y=y; } public void setNameTab(String tab ) throws SQLException{ qveri = new jSql_qveri(); /*Предаем туда даные*/ qveri.setTabName(tab); /*Возвращаем имена столбцов */ ColumnName=qveri.getColumnName(); /*Возвращаем количество столбцов*/ ColumnCount=qveri.getCountStr(); RowCount=qveri.getCountRow(); //this.name=jConect_bd.name; //this.x=jConect_bd.x1; //this.y=jConect_bd.y1; } }
|
Запрос в бд Код | public class jSql_qveri { /// Обьявляем переменные /* Название таблицы*/ private String TabName; /* Статемент БД */ private Statement stmt_q=jConect_bd.stmt_pub; /* Имена столбцов */ private String[] ColumnName; /* Количество столбцов */ private int CountStr; private String SQL_qveri; private int CountRow; public static String nSkv_Name; private String valueDB[][]; // Возвращаем имена столбцов /** * Возвращаt значение имен столбцов * @return */ public String[] getColumnName(){ return ColumnName;} /** * Возвращаt количество столбцов * @return */ public int getCountStr(){ return CountStr;} public int getCountRow(){ return CountRow; } /** * * @param TabName - Это имя таблицы которое должно быть выведенно в таблицу * @throws SQLException * Процедура обработки запроса */ public void setTabName(String TabName) throws SQLException{ ArrayList<String> name =new ArrayList<>(); this.TabName=TabName; this.nSkv_Name="0"; // Используя глобальную переменную Номера скважины String nName_SKV = new String(); if (this.nSkv_Name.isEmpty()){ nName_SKV="0"; }else{nName_SKV=this.nSkv_Name;} /* Определяем свойства таблици и задаем необходимый запрос в бд*/ switch(TabName){ case "SKV": /// 1. Определяем имена столбцов String[] ColumnName1 = {"Name","x","y","z","glub"}; ColumnName = ColumnName1; /// 2. Записываем SQL запрос SQL_qveri = "Select name,x,y,z,glub from atomgeo.skv where id_mestorog=100 and name='"+nName_SKV+"'"; /// 3. Количество столбцов CountStr = 5; break;
} /*Считываем данные из базы*/ ResultSet rs=stmt_q.executeQuery(SQL_qveri); // jConnect_bd; int r1=100000;
int r=0; valueDB=new String[r1][CountStr]; // rs.absolute(1); //.first(); while (rs.next()){ for (int i =1; i<= CountStr;i++){ // vulue_c[i].=add(rs.getString(rs.getString(i)); name=null; int v=rs.getRow(); valueDB[r][i-1]=rs.getString(i); //name.add(rs.getString(i)); // col.add(rs.getDouble(i)); } r=r+1; // } // присваеваем значение количеств столбцов CountRow=r; // Закрываем запрос // stmt_q.close(); } /** * Возвращаем данные о * @param c * @param r * @return * @throws SQLException */ public Object getColumnValue(int c,int r) throws SQLException {
return valueDB[r][c]; }
}
|
Main Код | public static void main(String[] args) throws SQLException {// //private class jTree extends CreateTree{}; // TODO code application logic here /*
// Создаем таблицу */jTabel_t jTab_Skv =new jTabel_t(); final jTabel_t jTab_Gklit =new jTabel_t(); jConect_bd.result(); jTab_Skv.setNameTab("SKV"); jTab_Skv1=jTab_Skv; jTab_Gklit.setNameTab("GKLIT"); // Создаем Древо скважин ///1. Создаем класс дерего аналичный CreateTree final CreateTree jTree = new CreateTree(); ///2. Создаем модель данных final TreeNode mesNode = jTree.createNodes(); /////////////////////////////////////// // Создаем новую форму final jForm_skv jfrom_main = new jForm_skv();
SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){
try { // Формируем дерево //jTree_M.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1)); jfrom_main.jTree_M.setModel(new javax.swing.tree.DefaultTreeModel(jTree.createNodes())); } catch (SQLException ex) { Logger.getLogger(JAV_BD.class.getName()).log(Level.SEVERE, null, ex); } // Передаем таблице модель jfrom_main.jTable1.setModel(jTab_Skv1); jfrom_main.jTable2.setModel(jTab_Gklit); jfrom_main.setVisible(true); } }); }
|
Обработка события выбора объекта Код | private void jTree_MMousePressed(java.awt.event.MouseEvent evt) { // TODO add your handling code here: // Значение обьекта String str=this.jTree_M.getSelectionModel().getSelectionPath().getLastPathComponent().toString(); jSql_qveri.nSkv_Name=str; //JAV_BD.main(args) this.jTable1.repaint(); this.jTable1.revalidate(); this.jTable2.repaint(); this.jTable2.revalidate(); }
|
Статьи читал много, но что то не въехал КАк вариант пытаюсь в маин добавить обработчик события выбора объекта - но как пок незнаю и что бы в нем был следующий код Код | public void actionPerformed(ActionEvent e) { table1.setModel("SKV"); table1.repaint;}
|
|