2015-12-09 2 views
0

[Для отображения значений в JList из базы данных OnLoad] [графического интерфейса Swing и Database`Для отображения значений в JList из DataBase OnLoad

Инициализация код:

public void initMethod() 
    { 


     try { 
      PortSelectionBox.addItem("COM1"); 
      PortSelectionBox.addItem("COM2"); 

      String[] listData={"sac : 1", "prl : 2","railway : 3", "railway : 4", "railway : 5", "prl : 6"}; 
      //SourceJList.setListData(listData); 


      //get values from database and show in destlist 
      String query="Select * from `test`.`mapgroup`;"; 
      System.out.println("query for selecttion: "+query); 
      ResultSet rs= con.SelectData(query); 
      ArrayList al = new ArrayList(); 
      while(rs.next()) 
      { 
       group=rs.getString("GroupName"); 
       port=rs.getString("PortId"); 
       System.out.println("grp: "+group); 
       System.out.println("port: "+port); 
       al.add(group); 

      } 

      //check if values present in db then show in dest list 

      //check which port is selected and then show value from database 



      if((PortSelectionBox.getSelectedItem().toString()).equals(port)) 
      { 
       System.out.println("if condition satisfied"); 
      } 
       for (String string : listData) { 
       SorceModel.addElement(string); 
      } 
      SourceJList.setModel(SorceModel); 


     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(PanelSMS.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (SQLException ex) { 
      Logger.getLogger(PanelSMS.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 

действие, выполняемое на комбобоксе onchnage:

кнопка
private void PortSelectionBoxActionPerformed(java.awt.event.ActionEvent evt) {             
     // TODO add your handling code here: 

     //Show values in destList according to values stored in DB with there ports ,what to do here to map values with values stored in db 



    } 

действие, выполняемое на оных (>>) по щелчку:

private void addBtnActionPerformed(java.awt.event.ActionEvent evt) {    

     try { 

      String port=PortSelectionBox.getSelectedItem().toString().trim(); 
      String group=SourceJList.getSelectedValue().toString(); 
      String temp=group; 
      String query="query to insert into db"; 
      con.Ins_Upd_Del(query); 
      System.out.println("code to add: "+query); 

      System.out.println("data added"); 

      DestModel.addElement(temp); 
      DestJList.setModel(DestModel); 
      SorceModel.removeElement(group); 
      System.out.println("done...."); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(PanelSMS.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (SQLException ex) { 
      Logger.getLogger(PanelSMS.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 
Кнопка

,

действие, выполняемое Вытащите (< <) OnClick:

private void removeBtnActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    try { 
     String port=PortSelectionBox.getSelectedItem().toString().trim(); 
     String group=DestJList.getSelectedValue().toString(); 
     String temp=group; 
     String query="query to delet"; 
     System.out.println("code to remove: "+query); 
     con.Ins_Upd_Del(query); 
     System.out.println("data added"); 

     SorceModel.addElement(temp); 
     SourceJList.setModel(SorceModel); 
     DestModel.removeElement(group); 
     System.out.println("done...."); 
    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(PanelSMS.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (SQLException ex) { 
     Logger.getLogger(PanelSMS.class.getName()).log(Level.SEVERE, null, ex); 
    } 
}  

Я сделал работу для добавления и удаления кнопок. но теперь я застрял в части обзора. Что я делаю, так это то, что я заполняю первый Jlist из arraylist. когда я добавляю какой-либо элемент из этого jlist, его добавляется во второй JList и вставляется в DB, ​​аналогично при операции удаления он делает обратное.

Теперь мне нужны те значения, которые я уже добавил во втором Jlist, его не следует показывать в первом Jlist и наоборот в момент загрузки, а значения должны отображаться соответственно в соответствии с выбором. также поле выбора играет важную роль здесь, так как я хочу показать значения в jlist в соответствии с выбранным значением.

Например, если я сохранил com1 с «prl: 1», то он должен отображаться только во втором Jlist onload. Incase Я хочу обновить эти списки, тогда это должно быть сделано в БД и отображено аналогичным образом.

Я не получаю поток для части обзора. У меня уже есть все, что хранится в БД, я просто хочу сопоставить вещи и показать их соответственно.

Пожалуйста, помогите мне ... а я не могу получить, что делать дальше ... `] 2

ответ

2

Если я правильно понимаю ваш вопрос, вы хотите, чтобы получить инициализацию двух JList компоненты для правильной работы. Список адресатов должен быть заполнен на основе базы данных, не так ли? Это может работать, как это (часть методы initMethod):

// [...] 

//get values from database and show in destlist 
String query="Select * from `test`.`mapgroup`;"; 
System.out.println("query for selection: "+query); 
ResultSet rs= con.SelectData(query); 
String port = null; 
ArrayList<String> groupsInDatabase = new ArrayList<>(); 
while(rs.next()) 
{ 
    String group=rs.getString("GroupName"); 
    port=rs.getString("PortId"); 
    System.out.println("grp: "+group); 
    System.out.println("port: "+port); 
    groupsInDatabase.add(group); 
} 

//check if values present in db then show in dest list 
DestModel = new DefaultListModel<>(); 
for (final String group : groupsInDatabase) { 
    DestModel.addElement(group); 
} 
DestJList.setModel(DestModel); 

// [...] 

Если список источников заполняться все от переменной listData, за исключением групп, которые находятся в базе данных? (Я переименовал переменную listData в allGroups ниже.) Инициализация для этого списка может выглядеть следующим образом (также часть метода initMethod):

// [...] 

SourceModel = new DefaultListModel<>(); 
for (String group : allGroups) { 
    if (!groupsInDatabase.contains(group)) { 
     SourceModel.addElement(group); 
    } 
} 
SourceJList.setModel(SourceModel); 

// [...] 

Роль PortSelectionBox пока не ясно. «COM1» и «COM2» относятся к определенным записям в базе данных (например, «prl: 1» и «prl: 2»)?

+0

Фактически в первый раз в базе данных ничего нет, поэтому destList должен быть пустым. PortSelectionBOX is imp, потому что сначала я выбираю порт, к которому я хочу добавить группы, как только я что-то добавлю к нему, его следует добавить в destList и удалить из sourcelist.Теперь, когда в следующий раз откройте GUI, я должен получить результат, который будет сохранен в БД, соответствующий определенному выбранному порту. exm: я храню порт COM1 с prl: 1 & prl: 2, затем я выбираю COM2 и сохраняю железную дорогу: 1 и железную дорогу: 2, теперь все эти значения должны отображаться в DestList с соответствующими портами. Спасибо – Kiara

+0

У меня есть таблица в БД, называемая mapgroup с столбцами mapgroupID, GroupName и PortName. Я добавляю данные о событии кнопки добавления в БД, теперь, если у меня есть значения COM1 с prl: 1 & prl: 2, тогда я выбираю COM2 и сохраняю железную дорогу: 1 и железную дорогу: 2 хранятся в БД, затем на виду, группы должны отображаться в destList с соответствующими портами. я не могу понять, где писать этот код, например, при инициализации или в событии selectionBox onchange, а также как сопоставлять эти группы с такими портами для отображения в destList – Kiara

+0

Также PortSelectionBox является динамическим (просто для примера я добавил значения вручную в выборка), поэтому любые значения могут быть там, и я могу отобразить любой порт в любую группу ... Я просто хочу видеть соответствующие данные в соответствии с портом, выбранным в destList (значения извлекаются из базы данных) – Kiara

Смежные вопросы