bonjour,je veux faire une simulation d'une file FIFO d'attente de processus ou il y aura les operations suivantes:possibilité de deplacement du dernier composant de processus et le decalage de la liste a chaque sortie de processus
j'ai crée ma JList e composant 2D et je me demande si je peux faire ces operation
voici le code(le code concerné est coloré en rouge)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
package simulateur;
import java.awt.*;
import java.awt.Graphics.*;
import java.awt.Toolkit;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.Graphics2D;
import java.io.File;
import java.io.IOException;
import java.util.*;
import javax.imageio.ImageIO;

class cellRenderer implements ListCellRenderer{
     public Component getListCellRendererComponent
    (JList list, Object value, int index,boolean isSelected,boolean cellHasFocus){
      JPanel pa=(JPanel)value;
      pa.setBackground(Color.DARK_GRAY);
      Dimension d=new Dimension();
     d.height=50;
     d.width=50;
pa.setPreferredSize(d);

return pa;
     }



}
class frame extends JFrame{
    
public frame(){
  setSize(800,800);
  JPanel no=new JPanel();
  Dimension dd=new Dimension();
  dd.height=200 ;
  dd.width=200 ;
no.setPreferredSize(dd);
  JPanel panneau=new JPanel();
JPanel processeurPan=new JPanel();
JPanel commandePan =new JPanel();
JPanel processusPan =new JPanel();
JPanel processusinfo=new JPanel();
commandePan.setLayout(new GridLayout(3,1));
panneau.setLayout(new BorderLayout());

proPan ps=new proPan();/*les composant processus*/
proPan pr=new proPan();
proPan pt=new proPan();
Vector vect=new Vector();
     vect.addElement(ps);
       vect.addElement(pr);
         vect.addElement(pt);

JList liste=new JList();/*la liste des processus*/
liste.setCellRenderer(new cellRenderer());

liste.setListData(vect);

liste.setBackground(this.getBackground());
liste.setLayoutOrientation(JList.HORIZONTAL_WRAP);
liste.setVisibleRowCount(1);
processusPan.add(liste);

JPanel buttonPan =new JPanel();
JPanel reg1=new JPanel();
JPanel reg2=new JPanel();
button ajout=new button("ajouter processus");
button demarrer=new button("DEMARRER");
button stop=new button("STOP");

JLabel registre1=new JLabel("registre1");
JLabel registre2=new JLabel("registre2");
JLabel registre3=new JLabel("registre3");
JLabel registre4=new JLabel("registre4");
JLabel registre5=new JLabel("registre5");
JLabel registre6=new JLabel("registre6");
JTextField regt1=new JTextField(10);
JTextField regt2=new JTextField(10);
JTextField regt3=new JTextField(10);
JTextField regt4=new JTextField(10);
JTextField regt5=new JTextField(10);
JTextField regt6=new JTextField(10);







reg1.setLayout(new GridLayout(6,1));
reg2.setLayout(new GridLayout(6,1));
buttonPan.add(ajout);
buttonPan.add(demarrer);
buttonPan.add(stop);
reg1.add(registre1);
reg1.add(regt1);
reg1.add(registre2);
reg1.add(regt2);
reg1.add(registre3);
reg1.add(regt3);
reg2.add(registre4);
reg2.add(regt4);
reg2.add(registre5);
reg2.add(regt5);
reg2.add(registre6);
reg2.add(regt6);
commandePan.add(processusinfo);
commandePan.add(buttonPan);
processeurPan.add(reg1,BorderLayout.WEST);
processeurPan.add(reg2,BorderLayout.EAST);
panneau.add(no,BorderLayout.NORTH);
panneau.add(processusPan,BorderLayout.WEST);
panneau.add(processeurPan,BorderLayout.EAST);
panneau.add(commandePan,BorderLayout.SOUTH);
 
add(panneau);
}
class button extends JButton{
   public button(String nom){
        super(nom);
    }
}
}
class proPan  extends JPanel/*la classe du composant processus*/
{
static int i=-3;

    @Override
     public void paintComponent(Graphics g)
     {

         Image  img=null;
    try {
             img = ImageIO.read(new File("c:\\icon.PNG"));

        } catch (IOException ex) {
            ex.printStackTrace();
        }

     Dimension d=new Dimension();
     d.height=50;
     d.width=50;
     setPreferredSize(d);
     Graphics2D g2=(Graphics2D)g;
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
     Graphics2D g2d = (Graphics2D)img.getGraphics();
       g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
       
g2d.setFont(new Font("Bold",Font.PLAIN,20));
g2d.setColor(Color.BLACK);
g2d.drawString("P"+i,25,40);

FontMetrics fontMetrics = g2d.getFontMetrics();
int longueur = fontMetrics.stringWidth("P1");
int hauteur = fontMetrics.getHeight();

     g2.drawImage(img, 0, 0, 50, 50, this);
  i++;
   
                     }
                             }
public class Main {


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable(){
public void run(){
            frame F=new frame();

   F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    F.setVisible(true);
} });}}
merci pour votre aide