HELP création de 'n' boutons

HELP création de 'n' boutons - Java - Programmation

Marsh Posté le 03-01-2007 à 15:39:14    

Hey.
J'aimerai pouvoir créer 'n' boutons correspondant à chaque 'vzs0000' du fichier texte.  
Ce fichier est de la forme :
 
vzs241    0
vzs242    0
vzb031    0
vzb032    0
vzf031    0
vzf032    0
vzs241 linus>

 
Pour l'instant, voila le code que j'ai fait pour réccupérer les infos :
 

Code :
  1. package projet1;
  2. import java.awt.BorderLayout;
  3. import java.awt.Color;
  4. import java.awt.Container;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.io.IOException;
  8. import java.io.RandomAccessFile;
  9. import javax.swing.BorderFactory;
  10. import javax.swing.Box;
  11. import javax.swing.JButton;
  12. import javax.swing.JFrame;
  13. import javax.swing.JPanel;
  14. import javax.swing.JTextArea;
  15. import javax.swing.border.BevelBorder;
  16. import javax.swing.border.CompoundBorder;
  17. import javax.swing.border.EtchedBorder;
  18. import javax.swing.border.TitledBorder;
  19. public class Affichage extends JFrame {
  20. static JFrame mainFrame = new JFrame("Réccupération de données" );
  21. JTextArea textField = new JTextArea();
  22. String myFile = "hostname.txt";
  23. String fichierContenu= "";
  24. public Affichage() {
  25.  mainFrame.setSize(800, 600);
  26.  //centerPanel
  27.  Box left = Box.createVerticalBox();
  28.  JPanel leftPanel = new JPanel(new BorderLayout());
  29.  leftPanel.setBorder(new TitledBorder(
  30.         new EtchedBorder(),
  31.         "SNEC-IN" ));
  32.  leftPanel.setBackground(Color.YELLOW);
  33.  leftPanel.add(left, BorderLayout.CENTER);
  34.  textField.setBackground(Color.YELLOW);
  35.  leftPanel.add(textField);
  36.  //Mise en forme des cadres
  37.  Box top = Box.createHorizontalBox();
  38.  top.add(leftPanel);
  39.  JPanel headerPanel = new JPanel();
  40.  headerPanel.setBackground(Color.WHITE);
  41.  Container content = mainFrame.getContentPane();
  42.  content.setLayout(new BorderLayout());
  43.  content.add(headerPanel, BorderLayout.NORTH);
  44.  content.add(top, BorderLayout.CENTER);
  45.  try {
  46.   RandomAccessFile raf = new RandomAccessFile(myFile, "r" );
  47.   String line;
  48.   while ( (line = raf.readLine()) != null ) {
  49.    fichierContenu += line;
  50.   }
  51.   textField.setText(fichierContenu);
  52.  }
  53.  catch (IOException e) {
  54.   System.out.println("erreur dans: " + e);
  55.  }
  56.  mainFrame.setVisible(true);
  57. }
  58. }


 
Le problème étant que je réccupère, dans mon JPanel, sous forme texte et non sous forme de boutons que ceci :  
 
vzs241vzs242vzb031vzb032vzf031vzf032vzs241
 
 
Quelqu'un peut m'aiderrrrrrrrrrrrr ?? merci d'avance

Reply

Marsh Posté le 03-01-2007 à 15:39:14   

Reply

Marsh Posté le 04-01-2007 à 13:07:12    

Lorsque tu les récupères, stocke les dans une liste :
 
Vector liste = new Vector();
 
while ( (line = raf.readLine()) != null )    {
      liste.add(line);
}
 
Puis parcours ta liste en recherchant les String ne commençant pas par "vzs" et supprimme les de la liste.
 
Il ne te reste donc dans ta liste que les mots commençant par "vzs".
 
Maintenant créer un tableau de JButton de taille égale à ta liste :
JButton[liste.size()] jbutton = new JButton();
Et créer tes boutons :
for(int i=0; i < this.liste.size(); i++) {
jbutton[i] = new JButton();
}
 
Et c'est finit, tu as juste à les placer.

Reply

Marsh Posté le 04-01-2007 à 14:13:18    

M'enfin?!
 
- En 2007, on n'utilise plus Vector.
- Inutile de se farcir deux boucles. Une boucle pour lire, dans laquelle on filtre et dans laquelle ou crée les boutons!

Reply

Marsh Posté le 04-01-2007 à 18:05:08    

C'est un mec qui n'y connais pas grand chose manifestement en prog alors autant commencer par le début avec les vector après, il passera aux JList etc...
 
Les deux boucles sont dans la même logique afin qu'il comprenne réellement ce qu'il fait.
 
Avant de vouloir optimser ce que l'on fait, il faut savoir matriser ce que l'on fait.
 
Chaque chose en son temps sircam.

Reply

Marsh Posté le 04-01-2007 à 18:49:56    

sircam a écrit :


- En 2007, on n'utilise plus Vector.


 
si, sur téléphone portable, c'est la seule collection dispo IIRC :o
 

Spoiler :

point confiture [:petrus75]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-01-2007 à 19:13:36    

alors alors, voila ce que j'ai fait :
 

Code :
  1. //JButton config.
  2.  try {
  3.   RandomAccessFile raf = new RandomAccessFile(myFile, "r" );
  4.   while ( (line = raf.readLine()) != null) {
  5.    JButton nvBouton = new JButton(line);
  6.    leftPanel.add(nvBouton);
  7.     }
  8.     leftPanel.validate();
  9.  }
  10.  catch (IOException e) {
  11.   System.out.println("WARNING: " + e);
  12.  }


 
le problème étant que je ne veux pas qu'il me fasse un bouton avec la dernière ligne...  :??:  
 
Merci de votre coup de pouce ! :)

Reply

Marsh Posté le 04-01-2007 à 21:56:17    

kadreg a écrit :

si, sur téléphone portable, c'est la seule collection dispo IIRC :o


:o


Message édité par sircam le 04-01-2007 à 21:56:47
Reply

Sujets relatifs:

Leave a Replay

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