[PROB] look and feel Napkin et JFileChooser
Bonjour a tous,
j'ai un problème, j'essaie d'utiliser le look and feel napkin.
Aprés pas mal de recherche, j'ai trouver comment l'utiliser 8-) (premiere fois que j'utilise un L&F externe ).
Mais la, j'ai un gros problème, ma JFileChooser n'apparait plus (alors que sa fonctionne bien si je n'applique pas le L&F)
de plus, j'ai ceci qui s'affiche dans ma console
Code:
keys we didn't overwrite: []
donc voici mon code:
affichagePrinc.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
package replaceDotAndUnderscorePerSpace;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
@SuppressWarnings("serial")
public class AffichagePrinc extends JFrame {
JButton quitter;
JButton executer;
JButton ouvrir;
String path;
JFileChooser fc;
File dossier = null;
JPanel pan1;
JProgressBar progression;
JLabel affPath;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("napkin.NapkinLookAndFeel");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new AffichagePrinc();
}
public AffichagePrinc() {
super("Replace Dot and Underscore per Space");
// placement des composants
setLayout(new BorderLayout());
/***************************** HAUT ***************************/
// panel qui va contenir les composant pour le choix du fichier
JPanel pan1 = new JPanel();
TitledBorder titleBorder = new TitledBorder(new LineBorder(Color.gray,
2), "Dossier choisi");
pan1.setBorder(titleBorder);
pan1.add(new JLabel("Dossier à traiter :"));
affPath = new JLabel("Aucun dossier choisie !");
pan1.add(affPath);
// seclecteur de fichier
fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
add(pan1, BorderLayout.NORTH);
/********************* CENTRE *****************************/
JPanel pan2 = new JPanel();
TitledBorder titleBorder2 = new TitledBorder(new LineBorder(Color.gray,
2), "Progression");
pan2.setBorder(titleBorder2);
progression = new JProgressBar();
progression.setStringPainted(true);
pan2.add(progression);
add(pan2);
/******************************* BAS *************************/
// panel qui va contenir les composants quitter et executer
JPanel pan3 = new JPanel();
TitledBorder titleBorder3 = new TitledBorder(new LineBorder(Color.gray,
2), "Action");
pan3.setBorder(titleBorder3);
ouvrir = new JButton("Ouvrir");
ouvrir.addActionListener(new EcouteurBouton());
pan3.add(ouvrir);
executer = new JButton("Executer");
executer.addActionListener(new EcouteurBouton());
executer.setEnabled(false);
pan3.add(executer);
quitter = new JButton("Quitter");
quitter.addActionListener(new EcouteurBouton());
pan3.add(quitter);
add(pan3, BorderLayout.SOUTH);
/********************** FIN **************************/
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setMinimumSize(new Dimension(400, 100));
this.setResizable(false);
pack();
setVisible(true);
}
public class EcouteurBouton implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == quitter) {
System.exit(0);
} else if (e.getSource() == executer) {
// ici on lance le traitement
// si on a bien choisie un dossier
if (dossier.exists()) {
new Traitement(dossier, AffichagePrinc.this);
}
} else {
int returnVal = fc.showOpenDialog(AffichagePrinc.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
dossier = fc.getSelectedFile();
affPath.setText(dossier.getAbsolutePath());
executer.setEnabled(true);
pack();
}
}
}
}
} |
Traitement.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
package replaceDotAndUnderscorePerSpace;
import java.io.File;
import javax.swing.JOptionPane;
public class Traitement {
File fichiers[];
private Thread t;
public AffichagePrinc affPrin;
public Traitement(File dossier, AffichagePrinc affPrin) {
this.affPrin = affPrin;
fichiers = dossier.listFiles();
int nbFichier = 0;
// nombre de fichier a traiter
for (int i = 0; i < fichiers.length; i++)
if (fichiers[i].isFile())
nbFichier++;
// si le nombre de fichier a traiter est vide, nous affichons a message
// d'erreur
// et nous remetons le systeme dans les conditions initial
if (nbFichier == 0) {
information("Aucun fichier présent dans le répertoire",
"Information", affPrin);
}
// fixage des bornes de la jProgressBar
affPrin.progression.setMaximum(nbFichier);
affPrin.progression.setMinimum(0);
t = new Thread(new Avancement());
t.start();
}
@SuppressWarnings("static-access")
private void information(String info, String titre, AffichagePrinc RAZ) {
// affichage de l'information
JOptionPane jop1 = new JOptionPane();
jop1.showMessageDialog(null, info, titre,
JOptionPane.INFORMATION_MESSAGE);
// remise dans les conditions initial
RAZ.dossier = null;
RAZ.affPath.setText("Aucun dossier choisie !");
RAZ.executer.setEnabled(false);
}
public void replaceDotPerSpace(File fichier) {
// recupération du nom du fichier
String name = fichier.getName();
String path = fichier.getParent() + File.separator;
// decoupage afin de garder le point de l'extension
String tabName[] = name.split(".");
// remplacement des autre points par des espaces
for (int i = 0; i < tabName.length - 1; i++)
tabName[i] = tabName[i].replace(".", " ");
// recréation du nom du fichier
for (int i = 0; i < tabName.length; i++)
name += tabName[i];
// remplacement des _ par des espaces
name = name.replace("_", " ");
File newFichier = new File(path + name);
fichier.renameTo(newFichier);
}
class Avancement implements Runnable {
public void run() {
// lancement du remplacement par fichier
for (int i = 0; i < fichiers.length; i++) {
if (fichiers[i].isFile()) {
replaceDotPerSpace(fichiers[i]);
keys we didn't overwrite: []keys we didn't overwrite: []
// mise a jour de la JprogressBar
affPrin.progression
.setValue(affPrin.progression.getValue() + 1);
}
}
}
}
} |
Donc, si vous savez pourquoi cela ne fonctionne plus ?
Je vous remercie d'avance pour votre aide ;)
PS: le .jar du L&F est bien dans le buildPath ;)