Guest User

Untitled

a guest
Aug 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1. SwingWorker and JComboBox
  2. /*
  3. * To change this template, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package sheepfarm.tools;
  7.  
  8. import java.awt.Component;
  9. import java.awt.event.ItemEvent;
  10. import java.awt.event.ItemListener;
  11. import java.util.ArrayList;
  12. import java.util.Vector;
  13. import java.util.concurrent.ExecutionException;
  14. import java.util.logging.Level;
  15. import java.util.logging.Logger;
  16. import javax.swing.AbstractCellEditor;
  17. import javax.swing.JComboBox;
  18. import javax.swing.JTable;
  19. import javax.swing.event.PopupMenuEvent;
  20. import javax.swing.event.PopupMenuListener;
  21. import javax.swing.table.TableCellEditor;
  22. import org.joda.time.Interval;
  23. import java.util.Date;
  24. import javax.swing.DefaultComboBoxModel;
  25. import javax.swing.SwingWorker;
  26.  
  27. /**
  28. *
  29. * @author Personal Computer
  30. */
  31. public class JParentIDCellEditor extends AbstractCellEditor implements TableCellEditor {
  32.  
  33. private JComboBox jComboBox = new JComboBox();
  34. private boolean cellEditingStopped = false;
  35.  
  36. @Override
  37. public Object getCellEditorValue() {
  38. return jComboBox.getSelectedItem();
  39. }
  40.  
  41. @Override
  42. public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
  43. ArrayList<Integer> arrayList = new ArrayList<Integer>();
  44. arrayList.add(Integer.parseInt(value.toString()));
  45.  
  46. jComboBox = new JComboBox();
  47. ParentIDCellWorker worker = new ParentIDCellWorker(table, jComboBox, row, value);
  48. worker.execute();
  49.  
  50. jComboBox.addItemListener(new ItemListener() {
  51.  
  52. @Override
  53. public void itemStateChanged(ItemEvent e) {
  54. if (e.getStateChange() == ItemEvent.SELECTED) {
  55. fireEditingStopped();
  56. }
  57. }
  58. });
  59. jComboBox.addPopupMenuListener(new PopupMenuListener() {
  60.  
  61. @Override
  62. public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
  63. cellEditingStopped = false;
  64. }
  65.  
  66. @Override
  67. public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
  68. cellEditingStopped = true;
  69. fireEditingCanceled();
  70.  
  71. }
  72.  
  73. @Override
  74. public void popupMenuCanceled(PopupMenuEvent e) {
  75. }
  76. });
  77. return jComboBox;
  78. }
  79.  
  80. public class ParentIDCellWorker extends SwingWorker<Vector, Vector> {
  81.  
  82. private JTable table;
  83. private JComboBox jComboBox;
  84. private int row;
  85. private Object value;
  86.  
  87. public ParentIDCellWorker(JTable table, JComboBox jComboBox, int row, Object value) {
  88. this.table = table;
  89. this.jComboBox = jComboBox;
  90. this.row = row;
  91. this.value = value;
  92. }
  93.  
  94. @Override
  95. protected Vector doInBackground() throws Exception {
  96. Vector vector = new Vector();
  97. vector.add(0);
  98. for (int i = 0; i < table.getRowCount(); i++) {
  99. try {
  100. Interval interval = new Interval(((Date) table.getValueAt(i, 2)).getTime(), new Date().getTime());
  101. interval = new Interval(((Date) table.getValueAt(i, 2)).getTime(), ((Date) table.getValueAt(row, 2)).getTime());
  102. String gender = table.getValueAt(i, 3).toString();
  103. if (!vector.contains(table.getValueAt(i, 0)) && gender.equals("Sheep")) {
  104. vector.add(table.getValueAt(i, 0));
  105. }
  106. } catch (IllegalArgumentException exp) {
  107. }
  108. }
  109. String[] rowsToRemove = getChildren(Integer.parseInt(table.getValueAt(row, 0).toString()), table).split("-");
  110. for (int i = 0; i < rowsToRemove.length; i++) {
  111. vector.removeElement((Object) (Integer.parseInt(rowsToRemove[i])));
  112. }
  113. return vector;
  114. }
  115.  
  116. public String getChildren(int id, JTable jTable) {
  117. String id_map = "";
  118. for (int i = 0; i < jTable.getRowCount(); i++) {
  119. if (Integer.parseInt(jTable.getValueAt(i, 1).toString()) == id) {
  120. id_map += getChildren(Integer.parseInt(jTable.getValueAt(i, 0).toString()), jTable);
  121. }
  122. }
  123. return id + "-" + id_map;
  124. }
  125.  
  126. @Override
  127. protected void done() {
  128. try {
  129. for (Object i : get()) {
  130. jComboBox.addItem(i);
  131.  
  132. }
  133. jComboBox.setSelectedItem(value);
  134. } catch (InterruptedException ex) {
  135. Logger.getLogger(JParentIDCellEditor.class.getName()).log(Level.SEVERE, null, ex);
  136. } catch (ExecutionException ex) {
  137. Logger.getLogger(JParentIDCellEditor.class.getName()).log(Level.SEVERE, null, ex);
  138. }
  139. }
  140. }
  141.  
  142. @Override
  143. public boolean stopCellEditing() {
  144. return cellEditingStopped;
  145. }
  146. }
Add Comment
Please, Sign In to add comment