[Java] Encadrer un JPanel

Résolu
valentin2703 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   -  
valentin2703 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   9
 
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
Utilisateur anonyme
 
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   Statut Membre Dernière intervention   9
 
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
 
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   Statut Membre Dernière intervention   9
 
Pas bête ^^ Merci :p
0

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

Posez votre question
Utilisateur anonyme
 
Pour faire mieux, il faudrait utiliser paint(Graphics g)...

@++
0
valentin2703 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   9
 
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
 
if(decompose.equals(" ") // si égal ...

if(!decompose.equals(" ") // si pas égal ...
0
valentin2703 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   9
 
ç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
 
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   Statut Membre Dernière intervention   9
 
- 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
 
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   Statut Membre Dernière intervention   9
 
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
 
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   Statut Membre Dernière intervention   9
 
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
 
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   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   9
 
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
 
Ou bien utiliser JFileChooser().

Si tu es preneur ...
0
valentin2703 Messages postés 180 Date d'inscription   Statut Membre Dernière intervention   9
 
Reuh !! ^^

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