[java] appeler une methode

Résolu/Fermé
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 - 10 mai 2008 à 15:12
 Utilisateur anonyme - 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. 
A voir également:

4 réponses

b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
11 mai 2008 à 03:50
aucune idéé????
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
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().
0
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
11 mai 2008 à 12:24
elle appartient à la classe TreeFolder , je t'ai compris je vais l'essayer ,
et merci pour votre reponse
0
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
11 mai 2008 à 12:34
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
0
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
11 mai 2008 à 17:38
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,
0
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 :)
0
Utilisateur anonyme > de passage
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
0