JFrame frame = new JFrame("ScrollTest"); JpanelMiniature panel = new JpanelMiniature(); frame.add(new JScrollPane(panel));
Exception in thread "main" java.lang.StackOverflowError
Exception in thread "main" java.lang.StackOverflowError at sun.awt.Win32GraphicsConfig.getBounds(Native Method) at sun.awt.Win32GraphicsConfig.getBounds(Unknown Source) at java.awt.Window.init(Unknown Source) at java.awt.Window.(Unknown Source) at java.awt.Frame.(Unknown Source) at javax.swing.JFrame.(Unknown Source) at Jpanel.JpanelMiniature.(JpanelMiniature.java:42) at Jpanel.JpanelMiniature.(JpanelMiniature.java:43) at Jpanel.JpanelMiniature.(JpanelMiniature.java:43) at Jpanel.JpanelMiniature.(JpanelMiniature.java:43) at Jpanel.JpanelMiniature.(JpanelMiniature.java:43) at Jpanel.JpanelMiniature.(JpanelMiniature.java:43)
package Jpanel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Panel; import java.awt.ScrollPane; import java.awt.Scrollbar; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.File; import java.util.ArrayList; import java.util.ResourceBundle.Control; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollBar; import javax.swing.ScrollPaneConstants; import javax.swing.JTree; import javax.swing.JScrollPane; import javax.swing.text.html.parser.ContentModel; import Composant.FenetrePrincipale; import Composant.Miniature; import com.sun.java.swing.plaf.nimbus.LoweredBorder; public class JpanelMiniature extends JPanel { private JPanel panneau; public ArrayList<Miniature> listMiniature; public JpanelMiniature() { listMiniature = new ArrayList<Miniature>(); FlowLayout flowlayout = new FlowLayout(); flowlayout.setHgap(30); flowlayout.setVgap(30); setLayout(flowlayout); LoweredBorder border = new LoweredBorder(); setBorder(border); JFrame frame = new JFrame("ScrollTest"); JpanelMiniature panel = new JpanelMiniature(); frame.add(new JScrollPane(panel)); } public void selection() { for (int i = 0; i < this.getComponentCount(); i++) { Miniature m = (Miniature) getComponent(i); m.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.lightGray)); } for (int i = 0; i < listMiniature.size(); i++) { listMiniature.get(i).setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.blue)); } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJFrame frame = new JFrame("ScrollTest"); JpanelMiniature panel = new JpanelMiniature(); frame.add(new JScrollPane(panel));
class JFrameTest extends JFrame { public JFrameTest() { super(); JpanelMiniature panel = new JpanelMiniature(); this.getContentPane().add(new JScrollPane(panel)); } }
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub FenetrePrincipale fenetre = new FenetrePrincipale("EXPERTISE : Renommer vos photos"); fenetre.setVisible(true); fenetre.pack(); } } ----------------------------------------------------------------------------------------------------------------------------------- public class FenetrePrincipale extends JFrame { protected JpanelArbre panelArbre; public JpanelMiniature panelMiniature; protected JpanelOutil panelOutil; public FenetrePrincipale (String titre) { super(titre); setLayout(new BorderLayout()); setPreferredSize(new Dimension(1200,700)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panelArbre = new JpanelArbre(this); panelMiniature = new JpanelMiniature(); panelMiniature.setBackground(Color.white); panelOutil = new JpanelOutil(this); JSplitPane slit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelArbre,panelMiniature); slit.setDividerLocation(270); add(slit,BorderLayout.CENTER); add(panelOutil,BorderLayout.EAST); } public JpanelArbre getPanelArbre() { return panelArbre; } public JpanelMiniature getPanelMiniature() { return panelMiniature; } public JpanelOutil getPanelOutil() { return panelOutil; } } ----------------------------------------------------------------------------------------------------------------------------------- public class Miniature extends JPanel { protected BufferedImage image; public String nomFichier = ""; protected String source = ""; protected String extension = ""; protected File fichierImage; public boolean selectionner = false; public Miniature (String lienImage,int cpt) { setPreferredSize(new Dimension(210,250)); setBackground(Color.LIGHT_GRAY); nomFichier = lienImage; for (int j = 1; j < cpt; j++) { int index = nomFichier.indexOf('\\')+1; nomFichier = nomFichier.substring(index,nomFichier.length()); } source = lienImage.substring(0,lienImage.indexOf(nomFichier)); extension = lienImage.substring(lienImage.indexOf("."),lienImage.length()); // Chargement de l'image fichierImage = new File(lienImage); try { image=ImageIO.read(fichierImage); } catch (IOException e) { e.printStackTrace() ; } } public void paintComponent(Graphics g) { super.paintComponent(g); if (image != null) { // Dessin de l'image g.drawImage(image, 5, 5, 200, 200, null); g.drawString(nomFichier, 5, 230); } } public void setNomImage(String newNomFichier) { File destination = new File(source+newNomFichier+extension); if ((existeDeja(destination.toString()))) { int i = 0; String nom = destination.toString(); while (existeDeja(nom)) { i++; nom = source+newNomFichier+i+extension; } newNomFichier += i; destination = new File(source+newNomFichier+extension); } boolean bool = fichierImage.renameTo(destination); if (bool == true) { nomFichier = newNomFichier+extension; } fichierImage = destination; } public boolean existeDeja(String destination) { boolean result = false; File[] tabFile; File sourceFile = new File(source); tabFile = sourceFile.listFiles(); for (int i = 0; i < tabFile.length; i++) { if (tabFile[i].toString().equals(destination)) { result = true; } } return result; } public String getExtension() { return extension; } } ----------------------------------------------------------------------------------------------------------------------------------- public class EvenementMiniature implements MouseListener { protected JPopupMenu menuMiniature; protected JMenuItem supprMiniature; protected Miniature miniature; protected JpanelMiniature panelMiniature; public EvenementMiniature(Miniature m, JpanelMiniature jpm) { miniature = m; panelMiniature = jpm; // Menu popup menuMiniature = new JPopupMenu(); // item du menu supprMiniature = new JMenuItem(); // affectation du texte supprMiniature.setText("Supprimer"); menuMiniature.add(supprMiniature); ActionListener menuListener = new ActionListener() { public void actionPerformed(ActionEvent e) { panelMiniature.remove(miniature); panelMiniature.listMiniature.remove(miniature); panelMiniature.repaint(); panelMiniature.validate(); } }; supprMiniature.addActionListener(menuListener); } public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub if (e.getButton() == MouseEvent.BUTTON3) { //System.out.println("click droit"); menuMiniature.show(miniature, 0, 0); } if (e.getButton() == MouseEvent.BUTTON1) { //System.out.println("click gauche"); if (miniature.selectionner == false) { panelMiniature.listMiniature.add(miniature); panelMiniature.selection(); miniature.selectionner = true; } else { panelMiniature.listMiniature.remove(miniature); panelMiniature.selection(); miniature.selectionner = false; } } } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } } ----------------------------------------------------------------------------------------------------------------------------------- public class JpanelArbre extends JPanel { protected JTree tree; protected DefaultMutableTreeNode racine; protected File[] roots; protected FenetrePrincipale maFenetreP; public JpanelArbre(FenetrePrincipale fp) { setPreferredSize(new Dimension(250,650)); maFenetreP = fp; // On définit notre premier noeud racine = new DefaultMutableTreeNode("Poste de travail",true); // Création du jtree tree = new JTree(racine); tree.setSize(1000,700); // On recupère les lecteurs roots = File.listRoots(); // Pour chaque lecteur for (int i = 0 ; i<roots.length ; i++) { // On recupère son contenu grace a getSubDirs //DefaultMutableTreeNode root = roots[i]; DefaultMutableTreeNode root = new DefaultMutableTreeNode(roots[i]); // Et on l ajoute a notre premier noeud racine.add(root); } // On met le jtree dans un jscrollpane JScrollPane scroll = new JScrollPane(tree); scroll.setPreferredSize(new Dimension(250,650)); scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); tree.addTreeSelectionListener(new TreeSelectionListener() { // qd l'utilisateur clique sur un noeud on affiche les informations du noeud // sélectionné public void valueChanged(TreeSelectionEvent evt) { if (evt.getNewLeadSelectionPath() != null) { // récupérer le noeud sélectionné DefaultMutableTreeNode node = (DefaultMutableTreeNode)evt.getNewLeadSelectionPath().getLastPathComponent(); if (node.toString() != "Poste de travail") { File root = new File(node.toString()); roots = root.listFiles(); if(roots != null) { for (int i = 0 ; i<roots.length ; i++){ DefaultMutableTreeNode racine = new DefaultMutableTreeNode(roots[i],true); node.add(racine); } } } } } }); tree.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) {} public void keyTyped(KeyEvent arg0) {} public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER ) { TreePath[] tableauPath = tree.getSelectionPaths(); for (int i = 0; i < tableauPath.length; i++) { String lien = tableauPath[i].getLastPathComponent().toString(); if((lien.endsWith(".JPG") true) || (lien.endsWith(".JPEG") true) || (lien.endsWith(".PNG") == true) ) { Miniature miniature = new Miniature(lien,tableauPath[i].getPathCount()-1); miniature.addMouseListener(new EvenementMiniature(miniature,maFenetreP.getPanelMiniature())); maFenetreP.getPanelMiniature().add(miniature); maFenetreP.getPanelMiniature().validate(); } } } } }); tree.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { int nbClick = e.getClickCount(); if (nbClick == 2) { TreePath[] tableauPath = tree.getSelectionPaths(); for (int i = 0; i < tableauPath.length; i++) { String lien = tableauPath[i].getLastPathComponent().toString(); if((lien.endsWith(".JPG") true) || (lien.endsWith(".jpeg") true) || (lien.endsWith(".png") == true) ) { Miniature miniature = new Miniature(lien,tableauPath[i++].getPathCount()-1); miniature.addMouseListener(new EvenementMiniature(miniature,maFenetreP.getPanelMiniature())); maFenetreP.getPanelMiniature().add(miniature); maFenetreP.getPanelMiniature().validate(); } } } } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }); // On ajoute notre jscrollpane add(scroll); } /** * Méthode récursive permettant de récupérer * tous les fichiers et sous dossiers d un autre * @param root un File qui représente le lecteur ou le repertoire de départ * @return DefaultMutableTreeNode */ public DefaultMutableTreeNode getSubDirs(File root) { // On créé un noeud DefaultMutableTreeNode racine = new DefaultMutableTreeNode(root,true); // On recupère la liste des fichiers et sous rep File[] list = root.listFiles(); if ( list != null) { // Pour chaque sous rep on appel cette methode => recursivité for (int j = 1 ; j<list.length ; j++) { DefaultMutableTreeNode file =new DefaultMutableTreeNode(list[j],true); file = getSubDirs(list[j]); racine.add(file); } } return racine; } } ----------------------------------------------------------------------------------------------------------------------------------- public class JpanelBoutton extends JPanel{ protected JTextField texte; protected JButton boutton; protected JpanelMiniature panelMiniature; protected FenetrePrincipale maFP; public JpanelBoutton (String numBoutton,FenetrePrincipale fp,String titre) { setPreferredSize(new Dimension(250,40)); panelMiniature = fp.getPanelMiniature(); maFP = fp; boutton = new JButton(numBoutton); boutton.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { for (int i = 0; i < panelMiniature.listMiniature.size(); i++) { panelMiniature.listMiniature.get(i).setNomImage(texte.getText()); panelMiniature.repaint(); } } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }); texte = new JTextField(titre); add(boutton); add(texte); } public JTextField getTexte() { return texte; } public JButton getBoutton() { return boutton; } } ----------------------------------------------------------------------------------------------------------------------------------- public class JpanelMiniature extends JPanel { private JPanel panneau; public ArrayList<Miniature> listMiniature; public JpanelMiniature() { listMiniature = new ArrayList<Miniature>(); FlowLayout flowlayout = new FlowLayout(); flowlayout.setHgap(30); flowlayout.setVgap(30); setLayout(flowlayout); LoweredBorder border = new LoweredBorder(); setBorder(border); } public void selection() { for (int i = 0; i < this.getComponentCount(); i++) { Miniature m = (Miniature) getComponent(i); m.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.lightGray)); } for (int i = 0; i < listMiniature.size(); i++) { listMiniature.get(i).setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.blue)); } } } ----------------------------------------------------------------------------------------------------------------------------------- public class JpanelOutil extends JPanel{ protected FenetrePrincipale maFenetreP; public JpanelOutil(FenetrePrincipale fp) { setPreferredSize(new Dimension(250,700)); maFenetreP = fp; JButton bouttonZero = new JButton("Boutton 0 : Macro complete"); JPanel panelBouttonZero = new JPanel(); panelBouttonZero.setPreferredSize(new Dimension(250,60)); panelBouttonZero.add(bouttonZero); JpanelBoutton bouttonUn = new JpanelBoutton("1",maFenetreP,"PLAQUE"); JpanelBoutton bouttonDeux = new JpanelBoutton("2",maFenetreP,"ELEVATION"); JpanelBoutton bouttonTrois = new JpanelBoutton("3",maFenetreP,"TETE"); JpanelBoutton bouttonQuatre = new JpanelBoutton("4",maFenetreP,"PROFIL"); JpanelBoutton bouttonCinq = new JpanelBoutton("5",maFenetreP,"PHASE1"); JpanelBoutton bouttonSix = new JpanelBoutton("6",maFenetreP,"PHASE2"); JpanelBoutton bouttonSept = new JpanelBoutton("7",maFenetreP,"PHASE3"); JpanelBoutton bouttonHuit = new JpanelBoutton("8",maFenetreP,"CDG1"); JpanelBoutton bouttonNeuf = new JpanelBoutton("9",maFenetreP,"PIED1"); JpanelBoutton bouttonDix = new JpanelBoutton("10",maFenetreP,"PIED2"); JpanelBoutton bouttonOnze = new JpanelBoutton("11",maFenetreP,"PIED3"); JpanelBoutton bouttonDouze = new JpanelBoutton("12",maFenetreP,"PIED4"); JpanelBoutton bouttonTreize = new JpanelBoutton("13",maFenetreP,"PORTEE_GAUCHE"); JpanelBoutton bouttonQuatorze = new JpanelBoutton("14",maFenetreP,"PORTEE_DROITE"); JpanelBoutton bouttonQuinze = new JpanelBoutton("15",maFenetreP,"DEFAUT"); JpanelBoutton bouttonSeize = new JpanelBoutton("16",maFenetreP,"DETAIL"); JpanelBoutton bouttonDixsept = new JpanelBoutton("17",maFenetreP,"ACCES"); add(panelBouttonZero); add(bouttonUn); add(bouttonDeux); add(bouttonTrois); add(bouttonQuatre); add(bouttonCinq); add(bouttonSix); add(bouttonSept); add(bouttonHuit); add(bouttonNeuf); add(bouttonDix); add(bouttonOnze); add(bouttonDouze); add(bouttonTreize); add(bouttonQuatorze); add(bouttonQuinze); add(bouttonSeize); add(bouttonDixsept); } }
JSplitPane slit new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelArbre,panelMiniature); > JSplitPane slit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelArbre,new JScrollPane(panelMiniature));
GridLayout layout = new GridLayout(0, 10, 30, 30);