Ajouter, éditer et retirer des objets d'une JList

Ajouter, éditer et retirer des objets d'une JList - Java - Programmation

Marsh Posté le 27-06-2002 à 16:27:15    

J'y arrive presque, mais je ne suis pas satisfait du résultat. C'est limite crados et un rustine. Quelqu'un aurait un exemple d'une appli de ce type sous la main.
 
J'ai trouvé sur le net pas mal d'apps du style, sauf que le problème est souvent biaisé par l'introduction par défaut d'objets dans la JList, ou par le fait que les objets ajoutés sont de bêtes Strings.


---------------
Le site de ma maman
Reply

Marsh Posté le 27-06-2002 à 16:27:15   

Reply

Marsh Posté le 27-06-2002 à 16:32:38    

Cherrytree a écrit a écrit :

J'y arrive presque, mais je ne suis pas satisfait du résultat. C'est limite crados et un rustine. Quelqu'un aurait un exemple d'une appli de ce type sous la main.
 
J'ai trouvé sur le net pas mal d'apps du style, sauf que le problème est souvent biaisé par l'introduction par défaut d'objets dans la JList, ou par le fait que les objets ajoutés sont de bêtes Strings.




 

Code :
  1. listModel = new DefaultListModel();
  2. list = new JList(listModel);
  3. ....
  4. listModel.addElement("donald" );
  5. listModel.removeElement("coincoin" );


 
 
voila

Reply

Marsh Posté le 27-06-2002 à 16:34:07    

pour editer j ai jamais fait  
juste pour un combobox
 
jvai voir si ca se trouve ca marche pareil...


Message édité par veryfree le 27-06-2002 à 16:34:19
Reply

Marsh Posté le 27-06-2002 à 16:40:24    

Mon problème se situe surtout autour de la méthode valueChanged, je ne sais pas quand elle est déclenchée précisément. Faut que je cherche ça, en fait.


---------------
Le site de ma maman
Reply

Marsh Posté le 27-06-2002 à 16:41:24    

Voilà mon code. Je le trouve pas top.
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import javax.swing.event.*;
  5. public class SchedulerPane extends JPanel implements ListSelectionListener {
  6. private JList list;
  7. private DefaultListModel listModel;
  8. private JButton addButton;
  9. private JButton modifyButton;
  10. private JButton removeButton;
  11. private JTextField periodInput;
  12. private JTextField executionTimeInput;
  13. private JTextField remoteExecutionTimeInput;
  14. private JTextField remoteCommunicationTimeInput;
  15. private JTextField migrationTimeInput;
  16. private JTextField delayInput;
  17. public SchedulerPane() {
  18.  listModel = new DefaultListModel();
  19.  list = new JList(listModel);
  20.  list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  21.  list.setSelectedIndex(0);
  22.  list.addListSelectionListener(this);
  23.  JScrollPane listScrollPane = new JScrollPane(list);
  24.  addButton = new JButton("Add" );
  25.  addButton.addActionListener(new AddListener());
  26.  modifyButton = new JButton("Modify" );
  27.  modifyButton.addActionListener(new ModifyListener());
  28.  removeButton = new JButton("Remove" );
  29.  removeButton.addActionListener(new RemoveListener());
  30.  JPanel eastPane = new JPanel(new GridLayout(0,1));
  31.  eastPane.add(addButton);
  32.  eastPane.add(modifyButton);
  33.  eastPane.add(removeButton);
  34.  periodInput = new JTextField(8);
  35.  executionTimeInput = new JTextField(8);
  36.  remoteExecutionTimeInput = new JTextField(8);
  37.  remoteCommunicationTimeInput = new JTextField(8);
  38.  migrationTimeInput = new JTextField(8);
  39.  delayInput = new JTextField(8);
  40.  JLabel periodLabel = new JLabel("Period : ", JLabel.RIGHT);
  41.  JLabel executionTimeLabel = new JLabel("Execution Time : ", JLabel.RIGHT);
  42.  JLabel remoteExecutionTimeLabel = new JLabel("Remote Execution Time : ", JLabel.RIGHT);
  43.  JLabel remoteCommunicationTimeLabel = new JLabel("Remote Communication Time : ", JLabel.RIGHT);
  44.  JLabel migrationTimeLabel = new JLabel("Migration Time : ", JLabel.RIGHT);
  45.  JLabel delayLabel = new JLabel("Delay : ", JLabel.RIGHT);
  46.  periodLabel.setPreferredSize(remoteCommunicationTimeLabel.getPreferredSize());
  47.  executionTimeLabel.setPreferredSize(remoteCommunicationTimeLabel.getPreferredSize());
  48.  remoteExecutionTimeLabel.setPreferredSize(remoteCommunicationTimeLabel.getPreferredSize());
  49.  migrationTimeLabel.setPreferredSize(remoteCommunicationTimeLabel.getPreferredSize());
  50.  delayLabel.setPreferredSize(remoteCommunicationTimeLabel.getPreferredSize());
  51.  Box periodBox = Box.createHorizontalBox();
  52.  periodBox.add(periodLabel);
  53.  periodBox.add(periodInput);
  54.  Box executionTimeBox = Box.createHorizontalBox();
  55.  executionTimeBox.add(executionTimeLabel);
  56.  executionTimeBox.add(executionTimeInput);
  57.  Box remoteExecutionTimeBox = Box.createHorizontalBox();
  58.  remoteExecutionTimeBox.add(remoteExecutionTimeLabel);
  59.  remoteExecutionTimeBox.add(remoteExecutionTimeInput);
  60.  Box remoteCommunicationTimeBox = Box.createHorizontalBox();
  61.  remoteCommunicationTimeBox.add(remoteCommunicationTimeLabel);
  62.  remoteCommunicationTimeBox.add(remoteCommunicationTimeInput);
  63.  Box migrationTimeBox = Box.createHorizontalBox();
  64.  migrationTimeBox.add(migrationTimeLabel);
  65.  migrationTimeBox.add(migrationTimeInput);
  66.  Box delayBox = Box.createHorizontalBox();
  67.  delayBox.add(delayLabel);
  68.  delayBox.add(delayInput);
  69.  Box southBox = Box.createVerticalBox();
  70.  southBox.add(periodBox);
  71.  southBox.add(executionTimeBox);
  72.  southBox.add(remoteExecutionTimeBox);
  73.  southBox.add(remoteCommunicationTimeBox);
  74.  southBox.add(migrationTimeBox);
  75.  southBox.add(delayBox);
  76.  setLayout(new BorderLayout());
  77.  add(listScrollPane, BorderLayout.CENTER);
  78.  add(eastPane, BorderLayout.EAST);
  79.  add(southBox, BorderLayout.SOUTH);
  80.  modifyButton.setEnabled(false);
  81.  removeButton.setEnabled(false);
  82. }
  83. class RemoveListener implements ActionListener {
  84.  public void actionPerformed(ActionEvent event) {
  85.   int index = list.getSelectedIndex();
  86.   listModel.removeElementAt(index);
  87.   int size = listModel.getSize();
  88.   if(size == 0) {
  89.    removeButton.setEnabled(false);
  90.    modifyButton.setEnabled(false);
  91.   } else {
  92.    if(index == size)
  93.     index--;
  94.    list.setSelectedIndex(index);
  95.   }
  96.  }
  97. }
  98. class ModifyListener implements ActionListener {
  99.  public void actionPerformed(ActionEvent event) {
  100.   if(periodInput.getText().equals("" ) || executionTimeInput.getText().equals("" )) {
  101.    Toolkit.getDefaultToolkit().beep();
  102.    return;
  103.   }
  104.   int index = list.getSelectedIndex();
  105.   listModel.removeElementAt(index);
  106.   Task task = createTask();
  107.   listModel.insertElementAt(task, index);
  108.   list.setSelectedIndex(index);
  109.  }
  110. }
  111. class AddListener implements ActionListener {
  112.  public void actionPerformed(ActionEvent event) {
  113.   if(periodInput.getText().equals("" ) || executionTimeInput.getText().equals("" )) {
  114.    Toolkit.getDefaultToolkit().beep();
  115.    return;
  116.   }
  117.   Task task = createTask();
  118.   listModel.addElement(task);
  119.   list.setSelectedIndex(listModel.getSize() - 1);
  120.   modifyButton.setEnabled(true);
  121.   removeButton.setEnabled(true);
  122.  }
  123. }
  124. public void valueChanged(ListSelectionEvent e) {
  125.  if(e.getValueIsAdjusting() == false) {
  126.   if (list.getSelectedIndex() == -1) {
  127.    modifyButton.setEnabled(false);
  128.    removeButton.setEnabled(false);
  129.    periodInput.setText("" );
  130.    executionTimeInput.setText("" );
  131.    remoteExecutionTimeInput.setText("" );
  132.    remoteCommunicationTimeInput.setText("" );
  133.    migrationTimeInput.setText("" );
  134.    delayInput.setText("" );
  135.   } else {
  136.    modifyButton.setEnabled(true);
  137.    removeButton.setEnabled(true);
  138.    Task task = (Task)list.getSelectedValue();
  139.    periodInput.setText(String.valueOf(task.getPeriod()));
  140.    executionTimeInput.setText(String.valueOf(task.getExecutionTime()));
  141.    remoteExecutionTimeInput.setText(String.valueOf(task.getRemoteExecutionTime()));
  142.    remoteCommunicationTimeInput.setText(String.valueOf(task.getRemoteCommunicationTime()));
  143.    migrationTimeInput.setText(String.valueOf(task.getMigrationTime()));
  144.    delayInput.setText(String.valueOf(task.getDelay()));
  145.   }
  146.  }
  147. }
  148. public Task createTask() {
  149.  int period = Integer.parseInt(periodInput.getText());
  150.  int executionTime = Integer.parseInt(executionTimeInput.getText());
  151.  int remoteExecutionTime;
  152.  try {
  153.   remoteExecutionTime = Integer.parseInt(remoteExecutionTimeInput.getText());
  154.  } catch(NumberFormatException e) {
  155.   remoteExecutionTime = 0;
  156.  }
  157.  int remoteCommunicationTime;
  158.  try {
  159.   remoteCommunicationTime = Integer.parseInt(remoteCommunicationTimeInput.getText());
  160.  } catch(NumberFormatException e) {
  161.   remoteCommunicationTime = 0;
  162.  }
  163.  int migrationTime;
  164.  try {
  165.   migrationTime = Integer.parseInt(migrationTimeInput.getText());
  166.  } catch(NumberFormatException e) {
  167.   migrationTime = 0;
  168.  }
  169.  int delay;
  170.  try {
  171.   delay = Integer.parseInt(delayInput.getText());
  172.  } catch(NumberFormatException e) {
  173.   delay = 0;
  174.  }
  175.  return new Task(period, executionTime, remoteExecutionTime, remoteCommunicationTime, migrationTime, delay);
  176. }
  177. }


---------------
Le site de ma maman
Reply

Marsh Posté le 02-07-2002 à 09:25:37    

allez, à moi, au cas où ça vous interresserait ...
 
 

Code :
  1. import javax.swing.*;
  2. import javax.swing.event.*;
  3. import java.awt.event.*;
  4. import java.awt.*;
  5. public class RelationPanel extends JPanel implements ActionListener ,ListSelectionListener {
  6.     private JList listeRel;
  7.     private DefaultListModel listeRelModel;
  8.     private JButton badd;
  9.     private JButton bedit;
  10.     private JButton bdel;
  11.     private boolean editable;
  12.     public RelationPanel(boolean editable) {
  13.         super(new GridBagLayout());
  14.         GridBagLayout gb=(GridBagLayout)this.getLayout();
  15.         GridBagConstraints gbc=new GridBagConstraints();
  16.         this.editable=editable;
  17.         this.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Relations" ));
  18.         listeRelModel = new DefaultListModel();
  19. //remplissage ...
  20.         listeRelModel.addElement(...);
  21.        
  22.         listeRel=new JList(listeRelModel);
  23.         listeRel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  24.         //Panel des relations::positionnement de la liste
  25.         JScrollPane listeScrollPane = new JScrollPane(listeRel);
  26.         BatSim.insertInGridBag(listeScrollPane,gb,gbc,this,0,0,1,5,GridBagConstraints.WEST,5,5,5,5);
  27.         if (editable) {
  28.             listeRel.addListSelectionListener(this);
  29.             //Panel des relations::boutons
  30.             badd=new JButton("Ajouter" );
  31.             badd.setActionCommand("add" );
  32.             badd.addActionListener(this);
  33.             bedit=new JButton("Editer" );
  34.             bedit.setActionCommand("edit" );
  35.             bedit.addActionListener(this);
  36.             bedit.setEnabled(false);
  37.             bdel=new JButton("Supprimer" );
  38.             bdel.setActionCommand("del" );
  39.             bdel.addActionListener(this);
  40.             bdel.setEnabled(false);
  41.             BatSim.insertInGridBag(badd,gb,gbc,this,1,1,1,1,GridBagConstraints.WEST,5,5,5,5);
  42.             BatSim.insertInGridBag(bedit,gb,gbc,this,1,2,1,1,GridBagConstraints.WEST,5,5,5,5);
  43.             BatSim.insertInGridBag(bdel,gb,gbc,this,1,4,1,1,GridBagConstraints.WEST,5,5,5,5);
  44.         }
  45.     }
  46.     public void actionPerformed(ActionEvent e) {
  47.         if (e.getActionCommand().equals("add" )) {
  48.             //ouverture d'un boîte de dialogue pour ajouter unn élément
  49.             SaisieRelationDialog srd=new SaisieRelationDialog((JDialog)this.getFocusCycleRootAncestor(),this.listeRel,this.listeRelModel,null);
  50.         } else if (e.getActionCommand().equals("edit" )) {
  51.             //ouverture d'un boîte de dialogue pour ajouter unn élément
  52.             SaisieRelationDialog srd=new SaisieRelationDialog((JDialog)this.getFocusCycleRootAncestor(),this.listeRel,this.listeRelModel,(Relation)listeRelModel.elementAt(listeRel.getSelectedIndex()));
  53.         } else if (e.getActionCommand().equals("del" )) {
  54.             int index = listeRel.getSelectedIndex();
  55.             if (index!=-1) {
  56.                 listeRelModel.remove(index);
  57.                 int size = listeRelModel.getSize();
  58.                 if (size == 0) {
  59.                     //liste vide
  60.                     bedit.setEnabled(false);
  61.                     bdel.setEnabled(false);
  62.                 } else {
  63.                     //ajustement du focus
  64.                     if (index == listeRelModel.getSize())
  65.                         index--;
  66.                     listeRel.setSelectedIndex(index);
  67.                 }
  68.             }
  69.         }
  70.     }
  71.     public void valueChanged(ListSelectionEvent e) {
  72.         if (e.getValueIsAdjusting() == false) {
  73.             if (listeRel.getSelectedIndex() == -1) {
  74.                 bedit.setEnabled(false);
  75.                 bdel.setEnabled(false);
  76.             } else {
  77.                 bedit.setEnabled(true);
  78.                 bdel.setEnabled(true);
  79.             }
  80.         }
  81.     }
  82. }


Message édité par bobuse le 02-07-2002 à 09:27:57
Reply

Marsh Posté le 10-07-2002 à 14:23:19    

Je vais regarder ça avec le plus vibrant intérêt.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed