Téléchargement
illégal
Posez votre question Signaler

[java] appeler une methode [Résolu]

b_khallou 322Messages postés 18 octobre 2007Date d'inscription 14 octobre 2011Dernière intervention - Dernière réponse le 10 déc. 2008 à 06:03
Bonjour,
j'ai une class Diaporama où j'écris   le chemin du répertoire  qui contient les images que je vais  les visualiser en mode diaporama, dans le main() :

 public static void main(String[] args) {
    	Diaporama diap = new Diaporama(new File("F:\\Khaled\\images"));
        new Thread(diap).start();
    }

or je ne veut pas le faire entrer manuellement , j'ai une class FileTree qui possède une methode " getSelectedFiles() "


/**
	 * getSelectedFiles returns a File[] of the files represented by the
	 * selected treepaths
	 */
	public File[] getSelectedFiles() {
		TreePath[] selectedPaths = tree.getSelectionPaths();
		File[] fileBuffer = new File[selectedPaths.length];
		for (int i = 0; i < selectedPaths.length; i++)
			fileBuffer[i] = fileFromPath(selectedPaths[i]);
		return fileBuffer;
	}


et une autre methode " getCurrentFile() " 

	/** getCurrentFile returns the value of the currently selected file. */
	public File getCurrentFile() {
		return currentFile;
	}
alors je modifie le main du diaporama :
 Diaporama diap = new Diaporama(new File(getCurrentFile()));
pour que qd je clic sur un répertoire l'adresse de ce dernier soit comme un argument (parametre) pour Diaporama
mais elle m'affiche une erreur   " cannot find symbol method getCurrentFile() "
(les deux classe ds le meme package)
est ce qu'il y a une solution ?
et merci. 
Lire la suite 

[java] appeler une methode »

7 réponses
Réponse
+0
moins plus
aucune idéé????
tarek_dotzero- 11 mai 2008 à 11:27
Salut,

"getCorruntFile() "appartient à quelle classe, je ne pense pas qu'elle est dans la classe qui contient le main, alors il vous faut creer un objet de la classe qui la contient puis faire: monObjet.getCorruntFile().
Ajouter un commentaire
Réponse
+0
moins plus
elle appartient à la classe TreeFolder , je t'ai compris je vais l'essayer ,
et merci pour votre reponse
Ajouter un commentaire
Réponse
+0
moins plus
l'erreur est la meme voila la classe TreeFolder :

/**
*
*/
package imagesBrowser;

/*
* Copyright Jim Burton 2004
*
* This file is part of JMaid.
*
* JMaid is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* JMaid is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* JMaid; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
* Suite 330, Boston, MA 02111-1307 USA
*
* http://forum.java.sun.com/thread.jspa?threadID=497385&messageID=2347123
*/

import java.io.File;
import java.io.FilenameFilter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;

import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeWillExpandListener;
import javax.swing.text.Position;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

/**
* FileTree1 class displays the whole directory structure in the RHS of a
* JSplitPane.
*
* @author jim burton
*/
public class FileTree extends JScrollPane implements TreeWillExpandListener,
TreeSelectionListener {

private static final long serialVersionUID = 7970045957138128200L;
private MutableTreeNode root;
private JTree tree;
private File currentFile;
private boolean newFile = true;
private static String PLACEHOLDER = "@@_jb_special_placeholder_@@";
private ImagesBrowser imagesBrowser;

/** Creates a new instance of FileTree */
public FileTree(ImagesBrowser imagesBrowser) {
this.imagesBrowser = imagesBrowser;
getFiles();
this.add(tree);
this.setViewportView(tree);
}

/**
* getFiles builds the tree from scratch. When the tree is first loaded it
* contains the root directories or drives and the first level below that.
* Directories below that are given a special placeholder which is
* recognised by the TreeWillExpand event which then loads the contents of
* that dir using addDirToModel. This is to avoid the overhead of loading
* the whole tree.
*/
public void getFiles() {
root = new DefaultMutableTreeNode("fmTopLevel");
File[] roots = File.listRoots();
for (int i = 0; i < roots.length; i++) {
File f = roots[i];
String name = f.toString();
if (name.equals("/"))
name = "root";
MutableTreeNode node = new DefaultMutableTreeNode(name);
root.insert(node, root.getChildCount());
// Windows problem: skip floppy drive on startup as an empty drive
// gives annoying message...
if (!name.equals("A:\\"))
addDirToModel(f, node);
}
TreeModel model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
tree.setRootVisible(false);
tree.setEditable(true);
tree.setExpandsSelectedPaths(true);
tree.setScrollsOnExpand(true);
tree.setShowsRootHandles(true);
tree.addTreeSelectionListener(this);
tree.addTreeWillExpandListener(this);
tree.setDragEnabled(true);
// open to home directory
setTree(new File(System.getProperty("user.home")), newFile);

}

/**
* setTree is called to select a new node in the tree.
*
* @param f
* the new selected File object
* @param newFile
* whether or not to also send this file to the DetailPane
*/
public void setTree(File f, boolean newFile) {

this.newFile = newFile;
currentFile = f;
TreePath p = pathFromFile(f);
TreePath thePath;
int lastIndex = 0;

for (int i = 1; i < p.getPathCount(); i++) {
thePath = tree.getNextMatch(p.getPathComponent(i).toString(),
lastIndex, Position.Bias.Forward);
tree.expandPath(thePath);
lastIndex = tree.getRowForPath(thePath);
}

if (newFile)
tree.setSelectionPath(p);
tree.scrollPathToVisible(p);
}

/**
* fileFromPath takes a TreePath object and creates a corresponding File
* object.
*
* @param f
* the File object
*/
public static File fileFromPath(TreePath p) {
StringBuffer filePath = new StringBuffer();
for (int i = 1; i < p.getPathCount(); i++) {
String component = (p.getPathComponent(i).toString().equals("root")) ? "//"
: p.getPathComponent(i).toString();
filePath.append(component + File.separator);
}
return new File(filePath.toString());
}

/**
* pathFromFile takes a file object and creates a TreePath object which
* relates to the tree in the filetree component.
*
* @param f
* the File object
*/
public static TreePath pathFromFile(File f) {
String str = f.toString();
Object[] nodes;
if (str.equals("/")) {
nodes = new Object[2];
nodes[0] = new DefaultMutableTreeNode("fmTopLevel");
nodes[1] = new DefaultMutableTreeNode("root");
return new TreePath(nodes);
} else {
java.util.List<Serializable> nodeList = new ArrayList<Serializable>();
nodeList.add(new DefaultMutableTreeNode("fmTopLevel"));
String safeSeparator = (File.separator.equals("\\")) ? "\\\\"
: File.separator;
String[] temp = f.toString().split(safeSeparator);
for (int i = 0; i < temp.length; i++) {
String t = temp[i];
if (t.endsWith(":")
&& System.getProperty("os.name").indexOf("Windows") > -1)
t += "\\";
nodeList.add(new DefaultMutableTreeNode(t));
}
if (File.separator.equals("/"))
nodeList.set(1, "root");
nodes = nodeList.toArray();
return new TreePath(nodes);
}
}

/**
* selects a new node in the tree.
*
* @param p
* the new selected TreePath object
*/
public void setTree(TreePath p, boolean newFile) {
setTree(fileFromPath(p), newFile);
}

/**
* attempts to rebuild the tree from scratch to it's current position, to
* reflect changes in the file system
*
*
*/
public void refreshTree() {
TreePath[] allPaths = tree.getSelectionPaths();
for (int i = 0; i < allPaths.length; i++)
setTree(allPaths[i], false);
}

/**
* addDirToModel takes a directory filepath and adds it's nested directories
* to the tree model, if they aren't already there.
*
* @param f
* the directory to add
* @param n
* the node at which to add new nodes
*/
private void addDirToModel(File f, MutableTreeNode n) {
File[] contents = f.listFiles(new DirsOnlyFilter(true));
if (contents != null)
Arrays.sort(contents);
File t = null;
try {
for (int i = 0; i < contents.length; i++) {
t = contents[i];
String name = t.getName();
MutableTreeNode node = new DefaultMutableTreeNode(name);
n.insert(node, n.getChildCount());
// if this file contains files only they will never be shown in
// the filetree view
// so only show it as a node if it contains dirs
if (containsDirs(t))
node.insert(new DefaultMutableTreeNode(PLACEHOLDER), 0);
}
} catch (Exception e) {
System.out.println(
this.getClass().getName()
+"."+Thread.currentThread().getStackTrace()[1].getMethodName()
+" exception: '"
+ (t != null ? t : f) + "' inaccessible");
}
}

/**
* containsDir returns true if the given file contains a directory - used to
* determine whether to add a dummy child to it on the tree
*/
private boolean containsDirs(File f) {
if (!f.canRead())
return false;
return (f.listFiles(new DirsOnlyFilter(true)).length > 0);
}

/**
* getSelectedFiles returns a File[] of the files represented by the
* selected treepaths
*/
public File[] getSelectedFiles() {
TreePath[] selectedPaths = tree.getSelectionPaths();
File[] fileBuffer = new File[selectedPaths.length];
for (int i = 0; i < selectedPaths.length; i++)
fileBuffer[i] = fileFromPath(selectedPaths[i]);
return fileBuffer;
}

/** getCurrentFile returns the value of the currently selected file. */
public File getCurrentFile() {
return currentFile;
}

/**
* setSelectionPath sets the selectionpath of the tree component.
*
* @param p
* the new selection path
*/
public void setSelectionPath(TreePath p) {
System.out.println("opening " + p);
tree.setSelectionPath(p);
}

//////////////////////////////////////////
// Event handlers
//////////////////////////////////////////

/** treeWillCollapse not used */
public void treeWillCollapse(TreeExpansionEvent event)
throws ExpandVetoException {
}

/**
* treeWillExpand calls addDirToModel to build this part of the tree.
*/
public void treeWillExpand(TreeExpansionEvent event)
throws ExpandVetoException {
TreePath path = event.getPath();
MutableTreeNode node = (MutableTreeNode) path.getPathComponent(path
.getPathCount() - 1);
if (node.getChildAt(0).toString().equals(PLACEHOLDER)) {
node.remove(0);
addDirToModel(fileFromPath(path), node);
}
}

/**
* valueChanged receives treeselection events and loads the file or dir into
* detailpane
*/
public void valueChanged(TreeSelectionEvent e) {

TreePath p = tree.getSelectionPath();
if (p != null) { // it could be null if the tree was just collapsed
// and the selected node is invisible
currentFile = fileFromPath(tree.getSelectionPath());
// if we don't have permission, do nothing
if (currentFile.canRead()) {
// dp.receiveFile(currentFile, newFile);
// Mise à jour du panneau de la galerie
if (this.imagesBrowser != null)
this.imagesBrowser
.loadImages(currentFile.getAbsolutePath());
} else {
return;
}
}
}

// public static void main(String[] args) { FileTree ft = new
// FileTree(null); ft.setSize(300, 600); ft.setLocation(100,100);
// ft.setVisible(true); }
/*
* Obsolète
*
* public static void main(String[] args) { FileTree ft = new
* FileTree(null); ft.setSize(300, 600); ft.setLocation(100,100);
* ft.setVisible(true); }
*/

/**
* Filtre de fichier n'acceptant que les répertoires
*/
class DirsOnlyFilter implements FilenameFilter {

boolean showHidden;

public DirsOnlyFilter(boolean showHidden) {
this.showHidden = showHidden;
}

public boolean accept(File dir, String name) {
File f = new File(dir.getPath() + File.separator + name);
if (!f.isDirectory()) {
return false;
} else if (!showHidden) {
return (!(name.startsWith(".") || f.isHidden()));
}
return true;
}
}



}



et la classe diaporama :


package imagesBrowser;
import java.io.File;
import java.io.FilenameFilter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;

import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeWillExpandListener;
import javax.swing.text.Position;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;






import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

public class Diaporama extends JFrame implements Runnable
{

private static final long serialVersionUID = 1L;

private String folder;

private String[] images;

private int index;

private JLabel image;

public Diaporama(File folder) {
super("Diaporama");
images = folder.list();
this.folder = folder.getAbsolutePath();
index = 0;

setSize(800, 600);
image = new JLabel();
add(new JScrollPane(image));

setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void lireImage(String imageName) throws IOException {
System.out.println(folder + imageName);
image.setIcon(new ImageIcon(ImageIO.read(new File(folder + "\\"
+ imageName))));
}

public void run() {
while (true) {

try {
lireImage(images[index]);
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
}

try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}

index = (index + 1) % images.length;

}
}

public static void main(String[] args) {
FileTree che=new FileTree(); //j'ai ajouter cet instruction

Diaporama diap = new Diaporama(new File(che.getCurruntFile()));
new Thread(diap).start();
}
}


voila j'ai modifié le main de diaporama ms il ne conné ni la classe TreeFolder ni la methode ;
est ce qu'il y a une faute dans la declaration ou ..?
merci
Ajouter un commentaire
Réponse
+0
moins plus
c'est résolu

public static void main(String[] args) {
FileTree che;
Diaporama diap = new Diaporama(new File(che.getCurrentFile()));
new Thread(diap).start();
}
merci tarek_dotzero,
de passage - 9 déc. 2008 à 16:28
Le mec il s'appel khaled et dans son code c'est écrit copyright Jim Burton....

moi à sa place j'aurais au moins pris soin de retirer le copyright avant de le poster sur un forum :)
danimo- 10 déc. 2008 à 06:03
Salut "de passage"

Comment sais-tu si ce n'est pas une condition pour une utilisation libre de mettre ce texte ?

Cordialement,

Dan
Ajouter un commentaire
Ce document intitulé « [java] appeler une methode » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?