[Java] Encadrer un JPanel

Résolu/Fermé
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 - 5 avril 2011 à 10:10
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 - 8 avril 2011 à 10:47
Bonjour,

Je suis actuellement en train de créer un logiciel en Java, mais j'aimerai bien pouvoir encadrer mes JPanel de façon à ce que ça soit plus lisible et plus jolie. Pour pouvoir délimiter les différents panel.

Merci de vôtre aide,

A voir également:

13 réponses

valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 5/04/2011 à 13:45
Pour donner un exemple --> Je voudrais séparer les deux JTextArea (Ils sont tellement confudu qu'on ne peut pas les différencier) en fesant par exemple apparaitre des cases (cadres) qui serviront à mieu les distinguer . Peut qu'il est possible de faire apparaitre les cases d'un GridLayout ou d'un GridBagLayout ?

import java.awt.*; 
import javax.swing.*; 

class Exemple extends JFrame{ 

 Exemple(){ 

  super("Exemple"); 
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  
  JPanel p = new JPanel(); 
  setContentPane(p); 
  p.setLayout(new BorderLayout()); 
  
  JTextArea jta = new JTextArea(10,10); 
  jta.setText("sdopisdopisdopisd\nqsodiqsopidqopsidopqisd\nqsdjklqsjdklqsjdqsd"); 
  p.add(jta, BorderLayout.WEST); 
  
  JTextArea jta2 = new JTextArea(10,10); 
  jta2.setText("sdkjqsklqjsdlkjgfdfgg\nqsldjoefissdfljksdfjklhsekljh"); 
  p.add(jta2, BorderLayout.EAST); 
   
  pack(); 
  setVisible(true); 
 } 

 public static void main(String args[]){ 
  new Exemple(); 
 } 
}
0
Salut,

Pour que le 2 areas soient bien délimitées sans tout changer; les toutes premières modif à faire sont celles-ci:

p.add(jta, BorderLayout.NORTH);  
p.add(jta2, BorderLayout.SOUTH);

On aurait ainsi les 2 JTexTArea l'une en dessous de l'autre.

Noter que le panneau s'agrandit automatiquement si on ajoute trop de lignes et qu'à un moment on atteindra et dépassera la limite verticale de l'écran et on ne vera plus la fin du panneau et comme on ne gère pas JScrollPane la fin de chacune des JTextArea ne sera plus visible non plus.

Une autre modif à faire serait d'ajouter facilement une ligne de soulignés ___
en première ligne de jta2:

jta2.setText("____________________________\n"  
+ "sdkjqsklqjsdlkjgfdfgg\nqsldjoefissdfljksdfjklhsekljh");  


D'autre part; avec cet exemple simple; on ne peut rien faire d'autre qu'afficher mais ce n'est qu'un exemple simple...

Cordialement,

Dan
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 08:14
Merci pour ta réponse, j'avais aussi penser à ajouter un Separator vertical pour séparer mes Panel. Mais contrairement à celui horizontal je n'arrive pas à le mettre en vertical.
Le but pour moi n'est pas de séparer seulement des JTexteField mais une bonne dixaine de Panel dans un logiciel en Java, donc je pense que les Separator serait plus appropriés ^^
0
Utilisateur anonyme
6 avril 2011 à 09:43
Re,

import java.awt.*;
   import javax.swing.*;
   
   class Exemple2 extends JFrame
   {
      private String texteA = "";
      private String texteB = "";
      
      Exemple2()
      {
         super("Exemple");
         
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
         JPanel p = new JPanel();
         setContentPane(p);
         p.setLayout(new BorderLayout());
      
         texteA = "Abcdef\t|\nGhijkl\t|\nHijklm\t|\nNopqrs\t|";
         texteB = "123456\n789012\n345678\n901234";
      	
         JTextArea jta = new JTextArea(10,10);
         jta.setText(texteA);
         
         p.add(jta, BorderLayout.WEST);
         
         JTextArea jta2 = new JTextArea(10,10);
         jta2.setText(texteB);
         
         p.add(jta2, BorderLayout.EAST);
         
         pack();
         setVisible(true);
      }	
      
      public static void main(String args[])
      {
         new Exemple2();
      } 	
   }


Dan
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 09:56
Pas bête ^^ Merci :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
6 avril 2011 à 10:08
Pour faire mieux, il faudrait utiliser paint(Graphics g)...

@++
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 10:21
Ouai je vais essayer de voir, je vais surement pouvoir me débrouiller avec ça. Bonne journée.
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 10:29
Tu ne serais pas comment faire :
"Si la case du tableau est égale à un espace"

Du genre :
if(decompose[i] == " ")

Sauf que mois sa ne marche pas ça :s
0
Utilisateur anonyme
6 avril 2011 à 11:10
if(decompose.equals(" ") // si égal ...

if(!decompose.equals(" ") // si pas égal ...
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 11:27
Merci beaucoup, je vais tester ça. Parceque j'ai du changer le fichier texte que j'exploite et du coup je ne peut plus utiliser le numéro de case du tableau... Les nombres ne sont pas tous placés au même endroit.
Je te tien au courant
Encore merci.
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 6/04/2011 à 11:40
ça ne marche pas mais je pense que je m'y prend mal.
Je vais t'expliquer mon problème plus en détail ^^
Je récupère les lignes suivantes dans un fichier texte avec la première partie du programme :

* GigabitEthernet1/1 0 0 0 0 961000 1157 3086000 2728 0
* GigabitEthernet1/2 0 0 0 0 1073000 1104 3789000 3092 0
* GigabitEthernet2/1 0 0 0 42515 0 1 2628000 3086 0
* GigabitEthernet2/2 0 0 0 42577 0 1 2629000 3093 0
* GigabitEthernet2/3 0 0 0 20850 2000 4 2631000 3086 0
* GigabitEthernet2/4 0 0 0 0 4000 7 15000 23 0
* GigabitEthernet2/5 0 0 0 0 1000 3 19000 26 0
* GigabitEthernet2/6 0 0 0 0 314000 320 536000 402 0
* GigabitEthernet3/1 0 0 0 0 1000 2 19000 28 0
* GigabitEthernet3/2 0 0 0 0 223000 312 331000 450 0
* GigabitEthernet3/3 0 0 0 19606 13000 22 1269000 1259 0
* GigabitEthernet3/4 0 0 0 20562 458000 431 1848000 1611 0
* GigabitEthernet3/5 0 0 0 0 1000 2 12000 17 0
* GigabitEthernet3/6 0 0 0 0 89000 19 26000 32 0
* GigabitEthernet4/1 0 0 0 42599 1247000 1222 53000 79 0
* GigabitEthernet4/2 0 0 0 41950 103000 82 1384000 1322 0
* GigabitEthernet4/3 0 0 0 0 59000 59 100000 153 0
* GigabitEthernet4/4 0 0 0 0 72000 37 73000 108 0
* GigabitEthernet4/5 0 0 0 40908 147000 176 1375000 1399 0
* GigabitEthernet4/6 0 0 0 0 207000 189 202000 272 0
* GigabitEthernet5/1 0 0 0 0 90000 111 126000 206 0
* GigabitEthernet5/2 0 0 0 41616 0 0 2628000 3086 0
* GigabitEthernet5/3 0 0 0 0 243000 376 273000 452 0
* GigabitEthernet5/4 0 0 0 0 263000 365 261000 414 0
* GigabitEthernet5/5 0 0 0 0 221000 290 200000 333 0
* GigabitEthernet5/6 0 0 0 0 0 0 47000 82 0
* GigabitEthernet6/1 0 0 0 0 2445000 1574 3000 3 0
* GigabitEthernet6/2 0 0 0 0 1682000 1282 4000 5 0
* GigabitEthernet6/3 0 0 0 0 37000 60 88000 148 0
* GigabitEthernet6/4 0 0 0 0 73000 108 97000 156 0
* GigabitEthernet6/5 0 0 0 0 2000 3 50000 83 0
GigabitEthernet6/6 0 0 0 0 0 0 0 0 0

==================================

Bon alors voila, je voudrais récupérer les nombres qui sont en gras, apparement on ne le voie pas dans le post, mais le nombre d'espace entre les chiffres n'est jamais le même :s Donc je ne peut pas récupérer une case précise du tableau à chaque fois, ce qui pose un petit problème ^^
0
Utilisateur anonyme
6 avril 2011 à 12:14
Re,

* GigabitEthernet3/4 0 0 0 20562 458000 431 1848000 1611 0
* GigabitEthernet3/5 0 0 0 0 1000 2 12000 17 0
* GigabitEthernet3/6 0 0 0 0 89000 19 26000 32 0
* GigabitEthernet4/1 0 0 0 42599 1247000 1222 53000 79 0
* GigabitEthernet4/2 0 0 0 41950 103000 82 1384000 1322 0
* GigabitEthernet4/3 0 0 0 0 59000 59 100000 153 0
* GigabitEthernet4/4 0 0 0 0 72000 37 73000 108 0
* GigabitEthernet4/5 0 0 0 40908 147000 176 1375000 1399 0
* GigabitEthernet4/6 0 0 0 0 207000 189 202000 272 0
* GigabitEthernet5/1 0 0 0 0 90000 111 126000 206 0
* GigabitEthernet5/2 0 0 0 41616 0 0 2628000 3086 0
* GigabitEthernet5/3 0 0 0 0 243000 376 273000 452 0
* GigabitEthernet5/4 0 0 0 0 263000 365 261000 414 0
* GigabitEthernet5/5 0 0 0 0 221000 290 200000 333 0
* GigabitEthernet5/6 0 0 0 0 0 0 47000 82 0
* GigabitEthernet6/1 0 0 0 0 2445000 1574 3000 3 0
* GigabitEthernet6/2 0 0 0 0 1682000 1282 4000 5 0
* GigabitEthernet6/3 0 0 0 0 37000 60 88000 148 0
* GigabitEthernet6/4 0 0 0 0 73000 108 97000 156 0
* GigabitEthernet6/5 0 0 0 0 2000 3 50000 83 0
GigabitEthernet6/6 0 0 0 0 0 0 0 0 0

Malheureusement les gras ne figurent plus ici.

J'ai quelques questions:
Je suppose que c'est toi qui as mis les gras pour mettre en évidence les chiffres à récupérer.
-dis moi si c'est exactement ce fichier que tu lis
-par exemple est-ce que la dernière ligne ne commence pas par *
-autre cas : est-ce que la ligne 6/2 a bien le 1er chiffre gras moins le zero final
Parce que à part ces 2 lignes il y a une solution.
J'attend ta réponse merci.
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 6/04/2011 à 13:38
- Oui c'est bien moi qui est mis les chiffres en gras pour mettre en évidence les nombres que je veut récupérer par lignes (Sachant que comme cela représente la charge d'un switch, il risques de changer assés souvent, c'est pour cela que je doit faire une méthode plus généraliste)
- Je lis bien ce fichier là (sachant que tu a du oublier de copier/coller avant le 3/4 ^^), par contre il y a plus d'espaces.
- C'est normal que la derniere ligne ne commence pas par une étoile, ça veut dire que ce port GigabigEthernet n'est pas utilisé
- Excuse moi pour le 6/2, erreur de ma part ^^ Le 0 est bien compris dans le chiffre
0
Utilisateur anonyme
6 avril 2011 à 13:41
Il ne faut pas traiter les lignes qui ne commence pas par * ?

Ou bien on les traite et on affiche les valeurs 0 en gras ?
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 13:44
Oui il vaut mieu les traités, pi c'est plus simple pour le programme ^^. Toute facon si par la suite j'ai besoin de ne pas les traités je m'en sortirai =)
0
Utilisateur anonyme
6 avril 2011 à 14:02
Alors voilà:

   import java.io.*;
 
   class Lecture3
   {
      
      public static void main(String[] args)
      { 
      
         String filePath = "GigabitEthernet.txt";
         String garder = "";
         //PrintWriter ficOut;
      
         try
         { 
         
            BufferedReader buff = new BufferedReader(new FileReader(filePath)); 
          
            String line;
            int ctrLine = 0;
            // Lire le fichier ligne par ligne 
            // La boucle se termine quand la méthode affiche "null" 
            
            
            while ((line = buff.readLine()) != null)
            {
               ctrLine++;
               System.out.println(line);
               
               String[] decompose = line.split(" +"); //" +" signifie un ou plus d'un espace
            	
               System.out.println("Ligne " + ctrLine + " valeurs à garder:\n"
                  + decompose[decompose.length -5] + " " + decompose[decompose.length -3] + "\n");   	
            }
         	  
            buff.close(); //Lecture finie donc on ferme le flux
         }
            catch (Exception e)
            {
               System.out.println(e.toString());
               // on pourait avoir par exemple:
            	// java.io.FileNotFoundException: out.txt (Acces refusé)
            	// dans le cas où ficOut serait en lecture seule
            }
      }
   }


Je ne garde pas les valeurs retenues, ca reste à faire...

Dan
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 14:09
Ah ouai d'accord j'ai compris ton programme, au lieu de décomposer quand il y avait un seul espace (Ce qui me causer beaucoup de problèmes) tu a décomposer quand il y a tout les espaces, comme sa on peut encore utiliser le numéro du tableau pour trouver la valeur qui nous interesse.
[decompose.length -5] signifie que tu part de la fin du tableau ? Pour plus de facilité ?
0
Utilisateur anonyme
6 avril 2011 à 14:47
Pour éviter de tester si une ligne n'a pas un * au début, le nombre de valeurs numériques étant toujours le même.
Et s'il n'y a pas d'* ce sont bien les zéros figurés en gras qui sont pris.

On aurait le même résultat (2 zéros) avec les indices [6] et [8], mais pas le bons zéros.

L'avantage est qu'on fait le même traitement * ou pas.
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 14:51
Ah ouai j'y avait pas pensé ^^

Une dernière question : pour pouvoir utiliser ce programme sur des fichiers différents, j'ai fait en sorte de mettre le nom du fichier en ligne de commande :

Lecture.jar Fichieratester.txt

ça marche très bien dans le logiciel que j'utilise pour compiler, par contre dans le DOS windows il ne prend pas en compte mon argument. Bizare ? ^^
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 15:04
J'ai fini par laisser tomber le .jar et d'utiliser le bon vieux javac Lecture.java et le lancer avec java Lecture. Sa marche mieu ^^
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
6 avril 2011 à 15:51
En tout cas je te remercie pour toute l'aide que tu ma fournis.
Si par la suite j'ai de nouveau besoin d'aide je ferai appel à toi =)
0
Utilisateur anonyme
8 avril 2011 à 01:32
Ou bien utiliser JFileChooser().

Si tu es preneur ...
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
8 avril 2011 à 09:25
Reuh !! ^^

Tu t'y connais un peut en base SQL via Java ? :D
0