Fórum easy java magazine 2 - problemas #414477
23/03/2012
0
FileFilter filtro = (new FileFilter(){
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});
File[] classes = dir.listFiles(filtro);
roda, mas a lista vem vazia e o diretorio tem os arquivos... ajuda ae.. baixem o codigo do exemplo e testem por favor
desde ja, agradeço
Luiz Reinoso.
Curtir tópico
+ 0Posts
23/03/2012
Luiz Reinoso.
FileFilter filtro = (new FileFilter(){
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});
File[] classes = dir.listFiles(filtro);
roda, mas a lista vem vazia e o diretorio tem os arquivos... ajuda ae.. baixem o codigo do exemplo e testem por favor (e a parte de Reflexão)
desde ja, agradeço
Gostei + 0
04/04/2012
Willes Reis
Este objeto precisa receber um caminho de diretório base para fazer a pesquisa e/ou filtro.
Gostei + 0
05/04/2012
Luiz Reinoso.
Este objeto precisa receber um caminho de diretório base para fazer a pesquisa e/ou filtro.
private void loadPlugins() throws Exception {
/* Acessa o diretório onde ficam os plugins */
File dir = new File(/plugins);
/* Listamos todos os arquivos de classes
* (filtra somente os arquivos com extensão .class)
*/
File[] classes = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});
Gostei + 0
05/04/2012
Luiz Reinoso.
Este objeto precisa receber um caminho de diretório base para fazer a pesquisa e/ou filtro.
private void loadPlugins() throws Exception {
/* Acessa o diretório onde ficam os plugins */
File dir = new File(/plugins);
/* Listamos todos os arquivos de classes
* (filtra somente os arquivos com extensão .class)
*/
File[] classes = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});
cara ja passei parametro de tudo que é jeito!
Gostei + 0
05/04/2012
Luiz Reinoso.
package rEFLEXAO_APP;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileFilter;
import java.lang.reflect.Method;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class ReflectApp extends JFrame {
protected JMenu mainMenu = null;
protected JMenuBar menuBar = null;
protected JPanel mainPanel = null;
public ReflectApp() {
initComponents();
this.setSize(400, 300);
this.setTitle(Aplicação baseada em plugins);
this.setLocationRelativeTo(null);
this.setJMenuBar(menuBar);
}
public JPanel getMainPanel() {
return mainPanel;
}
private void initComponents() {
mainPanel = new JPanel();
mainMenu = new JMenu(Plugins);
menuBar = new JMenuBar();
menuBar.add(mainMenu);
this.setContentPane(mainPanel);
try {
loadPlugins();
} catch (Exception e) {
e.printStackTrace();
}
}
private void loadPlugins() throws Exception {
/* Acessa o diretório onde ficam os plugins */
File dir = new File(c://plugins);
/* Listamos todos os arquivos de classes
* (filtra somente os arquivos com extensão .class)
*/
File[] classes = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(.class);
}
});
/*
* Varre todos os arquivos de classe encontrados, para montar o menu
*/
for (File file: classes) {
/* Pega o nome do arquivo */
String className = file.getPath();
/* Retira o .class do final do nome do arquivo */
className = className.substring(0, className.indexOf(.class));
/* Substitui o separador de arquivo (/ no Linux e \ no Windows)
* por um ., para montar o nome qualificado da classe
*/
className = className.replace(File.separatorChar, .);
/* Obtêm o Class pelo nome qualificado da classe */
Class clazz = Class.forName(className);
/* Cria uma nova instância da classe, e faz o cast para
* a nossa interface (Plugin)
*/
//final Object reference = clazz.newInstance();
final Plugin reference = (Plugin) clazz.newInstance();
/* Obtêm e invoca o método que configura o this como aplicação
* no nosso plugin
*/
//Method setApplication = clazz.getMethod(setApplication,
// new Class[]{ReflectApp.class});
//setApplication.invoke(reference, new Object[]);
reference.setApplication(this);
/* Obtêm e invoca o método que retorna o nome que irá para o menu */
//Method getMenuName = clazz.getMethod(getMenuLabel, null);
//String menuLabel = (String) getMenuName.invoke(reference, null);
String menuLabel = reference.getMenuLabel();
/* Obtêm o método que executará o plugin */
//final Method execute = clazz.getMethod(execute, null);
JMenuItem menuItem = new JMenuItem(menuLabel);
menuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
/*
try {
execute.invoke(reference, null);
} catch (Exception ex) {
ex.printStackTrace();
}
*/
reference.execute();
}
});
mainMenu.add(menuItem);
}
}
public static void main(String[] args) {
ReflectApp app = new ReflectApp();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setVisible(true);
}
}
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)