jbsimartinez Posté(e) le 30 janvier 2012 Partager Posté(e) le 30 janvier 2012 Bonjour, Voilà, je cherche donc à modifier les dimension de mes « JscrollPane » à chaque changement de ma fenêtre. Ce que je ne comprends pas c’est que l’option que j’ai choisi fonctionne seulement de temps en temps, mais pas tout le temps ! Et même quant au lancement de l’application fenêtre tous fonctionnent bien, il me suffit de vouloir passé en fenêtre inconifier pour que cela ne marche plus ! Et donc un coup cela marche, puis le coup suivant non ! Un peu au moment ou cela veut ??? ET CELA SANS RIEN CHANGER AU CODE DU FICHIER .CLASS ENTRE CHAQUE TESTE ! JTextArea txt_message, txt_analyse;JScrollPane Zone_message, Zone_analyse;Toolkit kit = Toolkit.getDefaultToolkit();Dimension tailleEcran = kit.getScreenSize();int EcranX = tailleEcran.width;int EcranY = tailleEcran.height;int FenX, FenY;Dimension PageSize;/...public void windowStateChanged(WindowEvent event) {PageSize = this.getSize();FenX = PageSize.width;FenY = PageSize.height;//System.out.println("Tail Fenêtre X : " + FenX + "; Tail Page : " +EcranX);if (FenX > EcranX-20) { Zone_message.setPreferredSize(new Dimension((EcranX/2)-50,EcranY-200)); Zone_analyse.setPreferredSize(new Dimension((EcranX/2)-50,EcranY-200)); }if (FenX <= EcranX-20) { Zone_message.setPreferredSize(new Dimension(335,335)); Zone_analyse.setPreferredSize(new Dimension(335,335));}setVisible(true);} Vous pouvez constater que j'ai placé un teste qui me permet de lire les valeurs de "FenX" et de "EcranX" dans la console. Aussi je sais que les valeurs sont bonnent à chaque changemen de la fenêtre ! En plein écran sur 1024 px de résolution la largeur de fenêtre est égale à 1040 px En tail réduite ma résolution égale toujour (bien entendu) 1024 px pour une l'argeur de fenêtre de 750 px Merci d’avance pour tout aide de votre part. Lien vers le commentaire Partager sur d’autres sites More sharing options...
BreizFenrir Posté(e) le 31 janvier 2012 Partager Posté(e) le 31 janvier 2012 Si je comprends bien la situation, tu as rédigé du code qui se charge de redimensionner "manuellement" des éléments de ton interface ? J'ai vraiment très peu fait de développement d'interfaces "lourdes" en Java (uniquement à l'école et en formation ), mais je n'ai jamais eu à rédiger de tel code. Il faut dire que dans les deux cas, on utilisait très rapidement des instances de GridBagLayout pour gérer l'agencement des différents éléments entre eux. Après, tout ce qui concernait redimensionnement de fenêtres était géré automatiquement et je n'ai jamais observé de problème. Bon, ça n'explique pas le comportement erratique que tu observes par contre. Mais à défaut de pouvoir le comprendre, pouvoir le contourner est déjà pas mal je pense. Si tu penses que ça n'aide pas ton cas, et que tu as d'autres éléments à mettre en avant (traces des exceptions s'il y en a au moment de l'exécution), n'hésite pas. Il y a bien quelqu'un de plus calé que moi qui passera à un moment donné. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jbsimartinez Posté(e) le 31 janvier 2012 Auteur Partager Posté(e) le 31 janvier 2012 Si je comprends bien la situation, tu as rédigé du code qui se charge de redimensionner "manuellement" des éléments de ton interface ? J'ai vraiment très peu fait de développement d'interfaces "lourdes" en Java (uniquement à l'école et en formation ), mais je n'ai jamais eu à rédiger de tel code. Il faut dire que dans les deux cas, on utilisait très rapidement des instances de GridBagLayout pour gérer l'agencement des différents éléments entre eux. Après, tout ce qui concernait redimensionnement de fenêtres était géré automatiquement et je n'ai jamais observé de problème. Bon, ça n'explique pas le comportement erratique que tu observes par contre. Mais à défaut de pouvoir le comprendre, pouvoir le contourner est déjà pas mal je pense. Si tu penses que ça n'aide pas ton cas, et que tu as d'autres éléments à mettre en avant (traces des exceptions s'il y en a au moment de l'exécution), n'hésite pas. Il y a bien quelqu'un de plus calé que moi qui passera à un moment donné. Merci ! C'est exactement cela ! Oui, malgré une certaine pratique du Java maintenant, je reste bien encore un débutant ! Je comprend à peine, enfin, précisément comment utiliser les « panel » et format « layout ». Je vais à présent pouvoir vraiment me régaler avec les mise en place de mes interface ! J'utilisais bien des "layout" mais, va savoir pourquoi, ayant trouvé que plus tard le saut à la ligne dans mon "JTextArea", j'ai crue être obliger de forcer la redéfinition de celui-ci pour obtenir le même résultat. Aussi je ne m'était pas aperçu que je n'utilisais pas le bon type de "layout". A présent tout suit la dimension de la fenêtre d'application sans avoir à utiliser un redimensionnement répété ! Merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 1 février 2012 Partager Posté(e) le 1 février 2012 C'est pas forcément évident de prendre Swing en main. Mais ce n'est pas normal de faire ce que tu fais. Poste + de code et je t'explique. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jbsimartinez Posté(e) le 1 février 2012 Auteur Partager Posté(e) le 1 février 2012 C'est pas forcément évident de prendre Swing en main. Mais ce n'est pas normal de faire ce que tu fais. Poste + de code et je t'explique. OK ! Merci de ton attention ! Si tu peux donc m'en dire plus... Voilà donc mon nouveau code avec l'uttilisation de "GridLayout" au lieu de mon redimentionnement répétter : // Liste des import Javaimport java.applet.Applet;import java.awt.*;import java.awt.event.*;import java.awt.event.ActionListener;import java.awt.event.WindowListener;import java.awt.event.WindowStateListener;import javax.swing.*;// Début de la class {[code]}public class code extends Frame implements ActionListener, WindowListener, WindowStateListener{// Liste variables généralint i, j, index, cart, FenX, FenY; int lg = 750; int ht = 500;int x = 0; int y = 0; Toolkit kit = Toolkit.getDefaultToolkit();Dimension tailleEcran = kit.getScreenSize();Dimension PageSize;int EcranX = tailleEcran.width;int EcranY = tailleEcran.height;char let;boolean data;JTextArea txt_message, txt_analyse;JLabel nom, Tchoix, Tmessage, Tanalyse;JScrollPane Zone_message, Zone_analyse;Choice choix; Button lancer = new Button("GO");String type_code, message, analyse, val;String [][] ListCart ={ {"à","â","ä","ç","è","é","ê","ë","î","ï","ô","ö","ù","û","ü",".","’"}, {"a","a","a","c","e","e","e","e","i","i","o","o","u","u","u","","'"}};String [][] TabChif = { { " A=1 ", " K=7 ", " K=6 ", " D=3 ", " N=1 ", " S=6 ", " S=7 ", " H=7 ", " F=1 ", " V=8 " }, { "Alphanum\u00e9rique", "Cassette", "Cassis", "D\u00e9troit", "Indienne", "Saucisse", "Sucette", "Hachette", "Automobile", "Jus de l\u00e9gume" } };JMenuItem chif[] = new JMenuItem[21];// Mise en place de la Fenêtre d'applicationpublic code(){ // Création du Menu JMenuBar menubar = new JMenuBar(); JMenu menu11 = new JMenu("Type"); JMenu type11 = new JMenu("Codes \u00e0 Chiffres"); for (j=0; j<TabChif[0].length; j++) { chif[j+11] = new JMenuItem(TabChif[1][j]); } JMenu type12 = new JMenu("Codes \u00e0 Images"); JMenuItem imag11 = new JMenuItem("Ac\u00e9r\u00e9"); JMenuItem imag12 = new JMenuItem("Grille"); JMenuItem imag13 = new JMenuItem("Mandarin"); JMenuItem imag14 = new JMenuItem("\u00e0 Pavillons"); JMenuItem imag15 = new JMenuItem("S\u00e9maphore"); JMenuItem imag16 = new JMenuItem("Tic tac toc"); JMenu type13 = new JMenu("Codes \u00e0 Lettres"); JMenuItem lett11 = new JMenuItem("Acheter - J\u00b4y vais"); JMenuItem lett12 = new JMenuItem("Ag\u00e9 - Proc\u00e8s Verbal - WC - Eiffel"); JMenuItem lett13 = new JMenuItem("Avocat"); JMenuItem lett14 = new JMenuItem("A vot\u00e9"); JMenuItem lett15 = new JMenuItem("Cass\u00e9 - Meuh"); JMenuItem lett16 = new JMenuItem("H\u00e9l\u00e8ne"); JMenuItem lett17 = new JMenuItem("Herg\u00e9 - Happ\u00e9 - D\u00e9esse"); JMenuItem lett18 = new JMenuItem("Herv\u00e9 - KO - P\u00e9t\u00e9 - Oeufs pourris"); JMenuItem lett19 = new JMenuItem("Jeux olympiques"); JMenuItem lett20 = new JMenuItem("Rot13"); JMenuItem lett21 = new JMenuItem("Thrith\u00e8me"); JMenu type14 = new JMenu("Codes \u00e0 Symboles"); JMenuItem symb11 = new JMenuItem("Baton romain"); JMenuItem symb12 = new JMenuItem("Morse"); JMenu menu12 = new JMenu("Analyse"); JMenu menu13 = new JMenu("Histoire"); JMenu menu14 = new JMenu("Aide"); // Mise en place du menu menubar.add(menu11); menu11.add(type11); for (j=0; j<TabChif[0].length; j++) { type11.add(chif[j+11]); } menu11.add(new JSeparator()); menu11.add(type12); type12.add(imag11); type12.add(imag12); type12.add(imag13); type12.add(imag14); type12.add(imag15); type12.add(imag16); menu11.add(new JSeparator()); menu11.add(type13); type13.add(lett11); type13.add(lett12); type13.add(lett13); type13.add(lett14); type13.add(lett15); type13.add(lett16); type13.add(lett17); type13.add(lett18); type13.add(lett19); type13.add(lett20); type13.add(lett21); menu11.add(new JSeparator()); menu11.add(type14); type14.add(symb11); type14.add(symb12); menubar.add(menu12); menubar.add(menu13); menubar.add(menu14); // Action Menu for (j=0; j<TabChif[0].length; j++) { chif[j+11].addActionListener(this); } // ... // Action bouton lancer.addActionListener(this); // ... // Encart de structure // Labels & titres nom = new JLabel("NOM DU CODE = {Chiffrement : Alphanum\u00e9rique}"); Tchoix = new JLabel("Type de Chiffrement : "); choix = new Choice(); // Format de texte Font txtFont = new Font("TimesRoman", Font.PLAIN, 12); // Couleur Color coul_arp=new Color(238,238,238); // Choix liste réroulante [Choix] for (j=0; j<TabChif[0].length; j++) { choix.addItem(TabChif[0][j]); } choix.addItemListener(new ItemState()); // Mise en forme JPanel cadre = new JPanel(); JPanel encart = new JPanel(); JPanel titre = new JPanel(); JPanel plan = new JPanel(); JPanel grill_choix = new JPanel(); JPanel grill_mess = new JPanel(); JPanel message = new JPanel(); JTabbedPane onglet_mess = new JTabbedPane(); txt_message = new JTextArea("Entrer le message ici...", 20, 20); txt_message.setFont(txtFont); txt_message.setBackground(Color.white); txt_message.setLineWrap(true); txt_message.setWrapStyleWord(true); txt_message.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); Zone_message = new JScrollPane(txt_message); JPanel analyse = new JPanel(); JTabbedPane onglet_anal = new JTabbedPane(); txt_analyse = new JTextArea("Message apr\u00e8s \u00e9tude...", 20, 20); txt_analyse.setFont(txtFont); txt_analyse.setBackground(coul_arp); txt_analyse.setLineWrap(true); txt_analyse.setWrapStyleWord(true); txt_analyse.setEditable(false); txt_analyse.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); Zone_analyse = new JScrollPane(txt_analyse); cadre.setLayout(new BorderLayout()); encart.setLayout(new BorderLayout()); titre.setLayout(new FlowLayout()); plan.setLayout(new BorderLayout(10,10)); grill_choix.setLayout(new FlowLayout()); grill_mess.setLayout(new GridLayout(0,2,10,10)); grill_mess.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); message.setLayout(new BorderLayout(10,10)); analyse.setLayout(new BorderLayout(10,10)); message.add(Zone_message, BorderLayout.CENTER); analyse.add(Zone_analyse, BorderLayout.CENTER); onglet_mess.add("Message", message); onglet_anal.add("R\u00e9sultat", analyse); grill_choix.add(Tchoix); grill_choix.add(choix); grill_choix.add(lancer); grill_mess.add(onglet_mess); grill_mess.add(onglet_anal); titre.add(nom); plan.add(grill_choix, BorderLayout.NORTH); plan.add(grill_mess, BorderLayout.CENTER); encart.add(titre, BorderLayout.NORTH); encart.add(plan, BorderLayout.CENTER); encart.setBorder(BorderFactory.createEmptyBorder(20, 0, 0, 0)); cadre.add(menubar, BorderLayout.NORTH); cadre.add(encart, BorderLayout.CENTER); add(cadre, BorderLayout.CENTER); // ... // Mise au centre de l'écran x = (EcranX/2)-(lg/2); y = (EcranY/2)-(ht/2); setSize(lg, ht); setLocation(x, y); setVisible(true); setExtendedState(MAXIMIZED_BOTH); // Mise en forme général Image icon = Toolkit.getDefaultToolkit().getImage("img/icon.gif"); setIconImage(icon); setTitle("CODE - JB Simon MARTINEZ \u00a9 2011"); setBackground(new Color(238,238,238)); setVisible(true);}// Mise en place du graphique/*public void paint(Graphics g){ }*/// Gestion des événement de la Fenêtrepublic void windowClosing(WindowEvent event){ System.exit(0);}public void windowClosed(WindowEvent event){}public void windowDeiconified(WindowEvent event){}public void windowIconified(WindowEvent event){}public void windowActivated(WindowEvent event){}public void windowDeactivated(WindowEvent event){}public void windowOpened(WindowEvent event){}public void windowStateChanged(WindowEvent event) {}// Gestion des événements du Menupublic void actionPerformed(ActionEvent event){ for (j=0; j<TabChif[0].length; j++) { if (event.getActionCommand().equals(TabChif[1][j])) { nom.setText("NOM DU CODE = {Chiffrement : " + TabChif[1][j] + "}"); choix.select(j); } } // Traitement et analyse // > ... if (event.getActionCommand().equals("GO")) { // Récupération des données type_code = nom.getText(); message = txt_message.getText(); index = type_code.lastIndexOf("Chiffrement"); if (index > -1) { // Teste message non coder ? data = false; type_code = choix.getSelectedItem(); for (i=65; i<91; i++) { cart = message.lastIndexOf((char)i); if (cart > -1) { data = true; } } for (i=97; i<123; i++) { cart = message.lastIndexOf((char)i); if (cart > -1) { data = true; } } if (data) { // CODER LE MESSAGE if (type_code == " A=1 ") { analyse = ""; j = 0; message = message.trim(); for (i=0; i<17; i++) { message = message.replace(ListCart[0][i],ListCart[1][i]); } //message = message.toUpperCase(); for (i=0; i<message.length(); i++) { let = message.charAt(i); cart = (int)let; if (cart > 64 && cart < 91) { j = cart-64; } if (cart > 96 && cart < 123) { j = cart-96; } if (cart == 32) { analyse = analyse + "00"; j=0; } if (cart == 10) { analyse = analyse + "27"; j=0; } if (cart == 39) { analyse = analyse + "00"; j=0; } if (cart == 44) { analyse = analyse + ""; j=0; } if (j > 0 && j < 27) { if (j>9) { analyse = analyse + j; } else { analyse = analyse + "0" + j; } } } message = analyse; } } else { // DECODER LE MESSAGE analyse = ""; for (i=0; i<(message.length()/2); i++) { val = message.substring(i*2,(i*2)+2); cart = Integer.parseInt(val)+64; if (cart == 64) { analyse = analyse + " "; } if (cart > 64 && cart < 91) { analyse = analyse + (char)cart; } if (cart == 91) { analyse = analyse + "\n"; } } message = analyse; } } // Mise en place des données après Traitement txt_analyse.setText(message); } // ... < }// Gestion des événements de la Listeclass ItemState implements ItemListener { public void itemStateChanged(ItemEvent e) { for (j=0; j<TabChif[0].length; j++) { if (e.getItem() == TabChif[0][j]) { nom.setText("NOM DU CODE = {Chiffrement : " + TabChif[1][j] + "}"); } } }}// Fonctions principalepublic static void main(String args[]){ code ObjPage = new code(); ObjPage.addWindowStateListener(ObjPage); ObjPage.addWindowListener(ObjPage); ObjPage.show();} } Je t'en pris, dit moi tous ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 1 février 2012 Partager Posté(e) le 1 février 2012 Ça va niveau Swing, étends plutôt JFrame au lieu de Frame et met : setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); Ca t'évite de mettre les listeners à la fin. Après niveau Java, il faut structurer un peu plus Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.