powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / массив массивов
6 сообщений из 6, страница 1 из 1
массив массивов
    #39307369
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано:
двумерный строковый массив, который заполняется при нажатии кнопки и служит источником данных для объекта JTable
Код: java
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.
// Данные таблицы и скроллинг панелей.
   private String[][] data = {
           {"T", "70", "07.09.16"},
           {"P", "0,5", "07.09.16"},
           {"G", "6", "07.09.16"},
           {"T1", "50", "07.09.16"},
           {"P1", "0,4", "07.09.16"},
           {"G1", "5", "07.09.16"},
           {"D", "1", "07.09.16"},
           {"D", "2", "07.09.16"},
           
 }; 
................................
 while (rs1.next())
      	           {  data[j][0]=rs1.getString(1);
      	              data[j][1]=Integer.toString(rs1.getInt(2));
       	            j++;  
      	           } // end while ParQuery
      	           stmt1.close();  
    	           rs1.close();
    	         
    	           table[i] = new JTable(data, columnNames);
    	           scrollPane[i] = new JScrollPane(table[i]);
    	           TablePanel[k].add(scrollPane[i]);
..................................................................
  


Проблема - при отрисовке панелей я вижу только последние данные из запроса, те видимо мне необходим не один строковый массив, а массив массивов. Помогите пожалуйста уважаемые профессионалы. Как создать массив из 100 двумерных строковых массивов?
...
Рейтинг: 0 / 0
массив массивов
    #39307382
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.PПроблема - при отрисовке панелей я вижу только последние данные из запроса

А какие должны быть?

Mari.P, те видимо мне необходим не один строковый массив, а массив массивов.
Из чего сделан такой логичный вывод? У вас и так массив массивов. Как это связано с "проблемой" описанной выше?

Mari.P Как создать массив из 100 двумерных строковых массивов?
Код: java
1.
2.
3.
4.
String[][][] dataOfData = {
   data1,
   data2
}
...
Рейтинг: 0 / 0
массив массивов
    #39307513
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
получается, когда я в цикле смотрю данные запроса, они выбираются и инициализируются нормально,
а выводятся на экран последние значения.
...
Рейтинг: 0 / 0
массив массивов
    #39307516
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.Pа выводятся на экран последние значения.
Что такое "последние значения" и чем они отличаются от предпоследних и последующих?


Судя по картинке вы не совсем понимаете что такое "объект (экземпляр класса)" и что такое TableModel.
Для того чтобы у каждой таблицы были свои собственные данные нужно чтобы у каждой таблицы был свой собственный экземпляр TableModel, который бы читал эти данные из своего собственного экземпляра массива. Так как у вас массив общий на все таблицы, то и данные общие на все таблицы.

К последним данным и последующим это никакого отношения не имеет. Абстрактные данные не имеют отношения порядка, пока вы его не зададите.
...
Рейтинг: 0 / 0
массив массивов
    #39307530
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, Ну почему, адреса берутся из запроса правильно, не везде же выводится один адрес.
данные в массив data я тоже пишу из запроса в цикле,
только почему-то во всех таблицах данные последнего адреса выводятся.

Код: java
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.
 String AddrQuery = "SELECT spr_address.adr, spr_ray.naim_short, spr_address.uid, spr_ray.uid FROM spr_ray INNER JOIN (spr_arj_naim INNER JOIN (spr_spec_oper INNER JOIN ((spr_adapter_el INNER JOIN spr_address ON spr_adapter_el.addres_uid = spr_address.uid) INNER JOIN spr_tekons_el ON spr_adapter_el.uid = spr_tekons_el.adapter_uid) ON spr_spec_oper.uid_tekon = spr_tekons_el.uid) ON spr_arj_naim.uid = spr_spec_oper.uid_naim_arj) ON spr_ray.uid = spr_address.ray_uid WHERE (((spr_adapter_el.opros)=1) AND ((Day(spr_spec_oper.last_date))=Day(Now()))) GROUP BY spr_address.adr, spr_ray.naim_short, spr_address.uid, spr_ray.uid, spr_adapter_el.tel_number,Day(spr_spec_oper.last_date) ORDER BY spr_ray.uid";
    	   String ParQuery="SELECT spr_address.adr, spr_address.uid, spr_arj_naim.naim, spr_spec_oper.last_date, spr_spec_oper.num_par, spr_spec_oper.last_date, P2016.value, P2016.date_o FROM P2016 INNER JOIN ((((spr_arj_naim INNER JOIN spr_spec_oper ON spr_arj_naim.uid = spr_spec_oper.uid_naim_arj) INNER JOIN spr_tekons_el ON spr_spec_oper.uid_tekon = spr_tekons_el.uid) INNER JOIN spr_adapter_el ON spr_tekons_el.adapter_uid = spr_adapter_el.uid) INNER JOIN spr_address ON spr_adapter_el.addres_uid = spr_address.uid) ON P2016.uid_spec = spr_spec_oper.uid WHERE (((spr_address.uid)=128) AND (Day(spr_spec_oper.last_date)=Day(P2016.date_o) And Hour(spr_spec_oper.last_date)=Hour(P2016.date_o))) ORDER BY P2016.date_o DESC";
    	   
    		 try {
    			
    			   JTabbedPane jtp = new JTabbedPane();
    		       getContentPane().add(jtp);
    	         // opening database connection to MySQL server
    	         con = DriverManager.getConnection(url, user, password);

    	         // getting Statement object to execute query
    	         stmt = con.createStatement();
    	    ///////////////////////////////////////////////////////////////////////////////
    	   // берем адреса      
    	   //////////////////////////////////////////////////////////////////////////////////
    	                      
    	       //////////////////////////////////////////////////////////////
    	       //панель таблиц параметров
    	         rs = stmt.executeQuery(AddrQuery);
    	         int i=0;
    	         int addr_uid;
    	         String TabNames[]=new String[8];
    	        
    	         int uid_ray_old=0,uid_ray,k=0;
    	         while (rs.next())
    	         { // добавляем первую вкладку
    	           if(k==0 && i==0)
    	           { TablePanel[k] = new JPanel();
    	             TablePanel[k].setLayout(new GridLayout(5,6,3,5));
    	            uid_ray_old=rs.getInt(4);
    	            TabNames[k]=rs.getString(2);                
    	           }	   
    	         // берем uid района
    	        	uid_ray=rs.getInt(4);
    	         // если перешли в новый район - добавляем вкладку
    	          	if(uid_ray!=uid_ray_old)
    	        	{ k++;
    	        	  TablePanel[k] = new JPanel();
    	        	  TablePanel[k].setLayout(new GridLayout(5,6,3,5));
    	        	  uid_ray_old=uid_ray;
    	        	  TabNames[k]=rs.getString(2); 
    	        	}
         
    		
                columnNames[0]=rs.getString(1);
    	          // здесь делаем цикл по заполнению параметров каждого ТП 
    	          addr_uid=rs.getInt(3);
    	          ParQuery="SELECT spr_arj_naim.naim,P2016.value, P2016.date_o FROM P2016 INNER JOIN ((((spr_arj_naim INNER JOIN spr_spec_oper ON spr_arj_naim.uid = spr_spec_oper.uid_naim_arj) INNER JOIN spr_tekons_el ON spr_spec_oper.uid_tekon = spr_tekons_el.uid) INNER JOIN spr_adapter_el ON spr_tekons_el.adapter_uid = spr_adapter_el.uid) INNER JOIN spr_address ON spr_adapter_el.addres_uid = spr_address.uid) ON P2016.uid_spec = spr_spec_oper.uid WHERE (((spr_address.uid)="+addr_uid+") AND (Day(spr_spec_oper.last_date)=Day(P2016.date_o) And Hour(spr_spec_oper.last_date)=Hour(P2016.date_o))) ORDER BY P2016.date_o DESC";
    	          stmt1 = con.createStatement();
    	           rs1 = stmt1.executeQuery(ParQuery);
    	           int j=0;
    	           while (rs1.next())
      	           {  data[j][0]=rs1.getString(1);
      	              data[j][1]=Integer.toString(rs1.getInt(2));
      	             
      	            //  data[j][2]=rs1.getDate(3);
      	            j++;  
      	            if(j>5)break;
      	           } // end while ParQuery
    	           
      	           stmt1.close();  
    	           rs1.close();
    	           
    	           table[i] = new JTable(data, columnNames);
    	           scrollPane[i] = new JScrollPane(table[i]);
    	           TablePanel[k].add(scrollPane[i]);
    	           i=i+1;(data, columnNames);}// end while
    	         
    	         // и дабавляем панели на экран
    	         for(i=0;i<k;i++)jtp.addTab(TabNames[i],TablePanel[i]);
    	         validate();
...
Рейтинг: 0 / 0
массив массивов
    #39308118
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так работает:
Код: java
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.
////////////////создаем очередную таблицу с заголовками///////////////
    	         // создадим и заполним динамическую таблицу   
    	    	    Vector<String> headerVect = new Vector<String>();
    	    	      headerVect.add(rs.getString(1));
    	    	      headerVect.add("Значение");
    	    	      headerVect.add("Время");
    	    	    DefaultTableModel mod = new DefaultTableModel(headerVect, 0);
    	       	    table[i] = new JTable();
    	    	    table[i].setModel(mod);
    	           // здесь делаем цикл по заполнению параметров каждого ТП 
    	          addr_uid=rs.getInt(3);
    	          ParQuery="SELECT spr_arj_naim.naim,P2016.value, P2016.date_o FROM P2016 INNER JOIN ((((spr_arj_naim INNER JOIN spr_spec_oper ON spr_arj_naim.uid = spr_spec_oper.uid_naim_arj) INNER JOIN spr_tekons_el ON spr_spec_oper.uid_tekon = spr_tekons_el.uid) INNER JOIN spr_adapter_el ON spr_tekons_el.adapter_uid = spr_adapter_el.uid) INNER JOIN spr_address ON spr_adapter_el.addres_uid = spr_address.uid) ON P2016.uid_spec = spr_spec_oper.uid WHERE (((spr_address.uid)="+addr_uid+") AND (Day(spr_spec_oper.last_date)=Day(P2016.date_o) And Hour(spr_spec_oper.last_date)=Hour(P2016.date_o))) ORDER BY P2016.date_o DESC";
    	          stmt1 = con.createStatement();
    	           rs1 = stmt1.executeQuery(ParQuery);
    	    
    	           while (rs1.next())
      	           {  Vector<String> newRow = new Vector<String>();
      		      newRow.add(rs1.getString(1));
      		      newRow.add(Integer.toString(rs1.getInt(2)));
      		      newRow.add(rs1.getTime(3).toString());
      		      //newRow.add("DdValue"+i);
      		      mod.addRow(newRow);
    	           } // end while ParQuery
    	           
    	           rs1.close();
    	           stmt1.close();  
                   // добавляем очередную таблицу на очередную скроллпанель    	           
    	           scrollPane[i] = new JScrollPane(table[i]);
    	           // добавляем скроллпанель на вкладку
    	           TablePanel[k].add(scrollPane[i]);
    	          // прибавляем счетчик цикла по всем ТП
    	            i=i+1;
    	   
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / массив массивов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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