|
Publicité | |||||||||||||||||||||||
|
|
#81 |
|
Invité régulier
![]() Inscription: avril 2008
Messages: 18
|
Auteur : JackHack
Titre : Applet se comportant comme Java Webstart Bonjour voici une petite API qui permet depuis une Applet de lancer un jar éxécutable. Comme Java webstart, elle copie en local vos jar et resources necessaires à votre application, puis lance votre application. Mais en plus elle vous laisse la main libre sur la barre de progression de la copie. Elle vous permet aussi de copiée des fichiers après le lancement. Et elle évite de multiples boîte de dialogue de validation, une seule en fait est nécessaire, c'est la signature de l'Applet et c'est tout. Bon j'ai tout mis dans le zip joins (documentation comprise Jack Hack |
|
|
00
|
|
|
#82 |
|
Membre Confirmé
![]() Inscription: juillet 2006
Localisation: Paris
Âge: 39
Messages: 286
|
il suffit de faire :
Code :
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+01:00"), Locale.FRANCE); Date date1=calendar.getTime(); String dateString=DateFormat.getDateInstance().format(date1); Dernière modification par gifffftane ; 24/05/2008 à 15h20. Motif: modération : merci de penser à la balise code (le #). |
|
|
00
|
|
|
#83 |
|
Membre Confirmé
![]() Inscription: juillet 2006
Localisation: Paris
Âge: 39
Messages: 286
|
Ce code utilise l'api java mail 1.3.
Code :
public void Confirmation(String email) throws Exception { String emailfrom = "Companier@Companie.fr"; String emailto = email; // Récupére les propriétés du systéme Properties props = System.getProperties(); // Spécification du serveur mail props.put("mail.smtp.host", "smtp.free.fr"); // Récupère la session javax.mail.Session session = javax.mail.Session.getDefaultInstance(props, null); // Définition du message MimeMessage message = new MimeMessage(session); //Spécification de l'expéditeur try { message.setFrom(new InternetAddress(emailfrom)); } catch (AddressException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Spécification du destinataire try { message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailto)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); //throw exception; } //Sujet du message try { message.setSubject("www.Companie.fr Utilisateurs"); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Texte du message on y introduit un lien hypertext appelant une servlet du cote serveur qui esr ConfirmationDemandeProjet String url = "http://www.Companie.fr/servlet/ConfirmationDemandeProjet?email="+email; String htmlText="<html><head><title>message.html</title>"+"<meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">" +"<meta http-equiv=\"description\" content=\"this is my page\"><meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\">"+ "<!--<link rel=\"stylesheet\" type=\"text/css\" href=\"./styles.css\">--></head><body><p> Merci de vous etes inscrit sur VisioClear.fr</p>"+ "<p>Votre adrese email est :"+email+"</p>"+ "<p>veuilliez cliquer sur ce lien pour confirmer votre demande de devis :<A HREF=\""+url +"\">ici</A></body></html>"; Code :
public class ConfirmationDemandeProjet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(true); // Recupere l'email de l'utilisateur String emailconfirmant = request.getParameter("email"); System.out.println(emailconfirmant); PersonneDAO dao = new PersonneDAO(); List candidatconfirme = dao.findByEmail(emailconfirmant); if (candidatconfirme.size()!=0) { Personne candidat = (Personne) candidatconfirme.get(0); candidat.setConfirme("oui"); Transaction tx = dao.getSession().beginTransaction(); dao.save(candidat); tx.commit(); dao.getSession().close(); EnregistrementSociete enr = new EnregistrementSociete(); enr.confirmationMessage(candidat.getEmail());enr.confirmationMessageAdmin(); getServletContext().getRequestDispatcher("/MaJSFCandidat.faces").forward(request,response); } } Puis grace à Code :
getServletContext().getRequestDispatcher("/MaJSFCandidat.jsp").forward(request,response); Voila le fruit de longues recherches sur google, qui j'espère profitera pleinnement à ceux qui apprennent. Pour comprendre le fonctionnement de java mail 1.3 voir http://www.supinfo-projects.com/fr/2004/javamail/ dans lequel j'ai puisser le code d'envoi de mail, mais le reste c'est bien moi qui l'ai fait Vous avez le même processuse sur mon site http://www.visioclear.fr/ Mettez une vraie adresse email. et vous recevrez la demande de confirmation voila. Dernière modification par Philcmoi ; 25/05/2008 à 11h46. |
|
|
00
|
|
|
#84 |
![]() Inscription: juin 2006
Localisation: Luxembourg
Messages: 6 981
|
Bibliothèque : JMF (Multimédia)
Auteur : millie Titre: Récuperation des données sur les pistes (audio/vidéo) d'un fichier multimédia avec JMF. Code :
/** * */ package media; import java.io.IOException; import javax.media.CannotRealizeException; import javax.media.Format; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoPlayerException; import javax.media.Processor; import javax.media.control.TrackControl; import javax.media.format.AudioFormat; import javax.media.format.VideoFormat; /** * @author millie * */ public class Main { static boolean waitState(Processor processor, int state) { boolean transition = false; Object object = new Object(); synchronized (object) { try { while (processor.getState() != state) object.wait(1000); transition = true; } catch (Exception e) { } } return transition; } /** * @param args * @throws IOException * @throws NoPlayerException * @throws CannotRealizeException */ public static void main(String[] args) throws NoPlayerException, IOException, CannotRealizeException { MediaLocator mediaLocaltor = new MediaLocator( "file://C:/tmp/workspace/Media/video/test_ecoles.avi"); Processor processor = Manager.createProcessor(mediaLocaltor); processor.realize(); if (!waitState(processor, Processor.Realized)) { System.err.println("Failed"); return; } double timeD = processor.getDuration().getSeconds(); System.out.println("Durée : " + (int) timeD); System.out.println("Content descriptor : " + processor.getContentDescriptor().toString()); TrackControl[] tracks = processor.getTrackControls(); for (int i = 0; i < tracks.length; i++) { Format format = tracks[i].getFormat(); System.out.println(format.toString()); if (format instanceof VideoFormat) { VideoFormat videoFormat = (VideoFormat) format; System.out.println("Video Format : "); System.out .println(" * Encoding : " + videoFormat.getEncoding()); System.out.println(" * Framerate : " + videoFormat.getFrameRate()); System.out.println(" * Max data lenght : " + videoFormat.getMaxDataLength()); System.out.println(" * Size largeur : : " + videoFormat.getSize().getWidth()); System.out.println(" * Size hauteur : : " + videoFormat.getSize().getHeight()); } if (format instanceof AudioFormat) { System.out.println("Audio Format : "); AudioFormat audioFormat = (AudioFormat) format; System.out .println(" * Encoding : " + audioFormat.getEncoding()); System.out .println(" * Channels : " + audioFormat.getChannels()); System.out.println(" * FrameSizeInBits : " + audioFormat.getFrameSizeInBits()); System.out.println(" * Endian : " + audioFormat.getEndian()); System.out.println(" * Signed : " + audioFormat.getSigned()); System.out.println(" * SampleRate Hz : " + audioFormat.getSampleRate()); System.out.println(" s* SampleSizeInBit : " + audioFormat.getSampleSizeInBits()); System.out.println(" * FrameRate : " + audioFormat.getFrameRate()); } } processor.deallocate(); processor.close(); System.out.println("Fini"); } }
__________________
Je ne répondrai à aucune question technique en privé |
|
00
|
|
|
#85 |
|
Membre éclairé
![]() |
Pas mal cette dernière classe sur JMF millie, en voici une qui permet de lire n'importe quel fichier audio, pour peu d'avoir inclu les jars nécéssaires aux codecs.
Code :
/** * File AudioFileReader.java * Created on 30 mai 2008 */ package util; import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.UnsupportedAudioFileException; /** * * @author Absil Romain. */ public class AudioFileReader { public AudioFileReader() { } public static void readAudioFile(File file) throws UnsupportedAudioFileException, IOException, LineUnavailableException { AudioInputStream in = AudioSystem.getAudioInputStream(file); AudioInputStream din = null; AudioFormat baseFormat = in.getFormat(); AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false); din = AudioSystem.getAudioInputStream(decodedFormat, in); rawplay(decodedFormat, din); in.close(); } public static void rawplay(AudioFormat targetFormat, AudioInputStream din) throws IOException, LineUnavailableException { byte[] data = new byte[4096]; SourceDataLine line = getLine(targetFormat); if (line != null) { // Start line.start(); int nBytesRead = 0, nBytesWritten = 0; while (nBytesRead != -1) { nBytesRead = din.read(data, 0, data.length); if (nBytesRead != -1) nBytesWritten = line.write(data, 0, nBytesRead); } // Stop line.drain(); line.stop(); line.close(); din.close(); } } public static SourceDataLine getLine(AudioFormat audioFormat) throws LineUnavailableException { SourceDataLine res = null; DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat); res = (SourceDataLine) AudioSystem.getLine(info); res.open(audioFormat); return res; } }
__________________
On a toujours besoin d'un plus bourrin que soi Oui il y a quelques bugs dans ma librairie de Sécurité, mais les classes postées ne sont pas celles de la dernière version, et j'ai la flemme de tout modifier. Je vous donnerai avec plaisir la dernière version du jar par mp. |
|
|
00
|
|
|
#86 | |
![]() Inscription: juin 2006
Localisation: Luxembourg
Messages: 6 981
|
Citation:
Code :
// 100 ms buffer for real time change to the sound stream int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10); byte[] buffer = new byte[bufferSize];
__________________
Je ne répondrai à aucune question technique en privé |
|
|
00
|
|
|
#87 |
![]() |
Cette contribution, toute modeste permet de comprendre quelques concepts de l’interface graphique en Java.
J’ai réalisé cette classe en m’inspirant du précieux document «Programmation Java pour les enfants, les parents et les grands-parents». J’ai trouvé intéressant de le compléter par ce programme qui consiste à réaliser une calculatrice à opérations simples. D’ailleurs un exemple de calculatrice a été expliqué dans ce tutoriel. Ce programme est en quelque sorte un complément de ce cas pratique. J’espère que j’ai bien commenté les lignes de code pour que ce programme soit compris par des débutants et par tous ceux qui peuvent en trouver une piste ou quelconque solution à leurs développements… Important : ne pas oublier de copier dans le même répertoire l'icone calculatrice.png ou de la créer. Cette icone est jointe dans ce document. Titre : Calculatrice à opérations simples Auteur : kmdkaci Champ d'application : Interface graphique. Niveau : débutant Code :
import javax.swing.*; import java.awt.*; import java.awt.event.*; //Pour les événements public class Calculatrice extends JFrame implements ActionListener { JPanel pChiffre = new JPanel(); //Panel qui contient les chiffres JPanel pSigne = new JPanel(); //Panel des opérateurs (+/*-=) JPanel pSaisie = new JPanel(); //Panel pour le champ de saisie. //Declaration des bouttons JButton bUn = new JButton("1"); JButton bDeux = new JButton("2"); JButton bTrois = new JButton("3"); JButton bQuatre = new JButton("4"); JButton bCinq = new JButton("5"); JButton bSix = new JButton("6"); JButton bSept = new JButton("7"); JButton bHuit = new JButton("8"); JButton bNeuf = new JButton("9"); JButton bZero = new JButton("0"); JButton bPoint = new JButton("."); JButton bEgal = new JButton("="); JButton bMoins = new JButton("-"); JButton bPlus = new JButton("+"); JButton bFois = new JButton("*"); JButton bDiv = new JButton("/"); JButton bC = new JButton("C"); JButton bAbout = new JButton("?"); TextField cSaisie = new TextField(20); //Zone de saisie JDialog aPropos = new JDialog(); //Boite A Propos de //Ce tableau sert à stocker les saisies //Entre les opérateurs et les chiffres, la taille doit être inférieure à 20 éléments //Vous pouvez bien sur modifier cette valeur. private String[] stocRes = new String[20]; private int i = 0; static final int LARGEUR = 210; static final int LONGUEUR = 215; //cRes est une variable qui permet de stocker l’expression à évaluer private String cRes = ""; //Prend Vraie si une erreur s'est produite private boolean erreur = false; public Calculatrice() { //On définit l'événement de fermeture de la fenêtre grâce à WindowAdapter WindowAdapter win = new WindowAdapter() { public void windowClosing(WindowEvent e) //Si on clique sur le bouton fermeture, on quitte le programme {System.exit(0);} }; //On ajoute l'événement à notre fenêtre. addWindowListener(win); //On définit les événements pour les boutons. bUn.addActionListener(this); bDeux.addActionListener(this); bTrois.addActionListener(this); bQuatre.addActionListener(this); bCinq.addActionListener(this); bSix.addActionListener(this); bSept.addActionListener(this); bHuit.addActionListener(this); bNeuf.addActionListener(this); bPlus.addActionListener(this); bMoins.addActionListener(this); bDiv.addActionListener(this); bFois.addActionListener(this); bZero.addActionListener(this); bEgal.addActionListener(this); bC.addActionListener(this); bPoint.addActionListener(this); bAbout.addActionListener(this); //On appelle la fonction afficher afficher(); } //Cette méthode permet de construire l'interface graphique public void afficher() { setSize(LARGEUR,LONGUEUR); //Fixer la taille setResizable(false); //Empêcher le redimensionnement de la fenêtre setTitle("Calculatrice"); //Titre de la fenêtre setLocationRelativeTo(null); //centrer la fenêtre //Déclaration de la fenêtre A propos JLabel label1 = new JLabel(" Developpez.com "); JLabel label2 = new JLabel(" Calculatrice à opèrations simples "); //On affiche les labels sur deux 2 colonnes. //On définit le Layout comme GridLayout aPropos.getContentPane().setLayout(new GridLayout(2,1)); aPropos.getContentPane().add(label1); aPropos.getContentPane().add(label2); //On fixe sa taille, son titre, empêcher le redimensionnement aPropos.setSize(320,150); aPropos.setTitle("A propos de "); aPropos.setResizable(false); //On l'affiche au milieu de l'écran aPropos.setLocationRelativeTo(null); //On associe à nos fenêtres une icone calculatrice.png (qui est dans le répertoire courant) Image icon = Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("./calculatrice.png")); setIconImage(icon); //On définit le conteneur pour la forme principale Container conteneur = getContentPane(); //On lui fixe un BorderLayout. Dans la zone nord on affiche le champ de saisie //Au centre, on affiche les chiffres, et à l'est on affiche les opérateurs (signes). BorderLayout disposition = new BorderLayout(); conteneur.setLayout(disposition); //On définit une font pour le champ de saisie. //On peut aussi laisser la font par défaut. Font font = new Font("TimesNewRoman",Font.BOLD,15); cSaisie.setFont(font ); //On désactive le champ de saisie pour la saisie avec le clavier cSaisie.setEnabled(false); //On ajoute le champ cSaisie au panel pSaisie dans la partie nord du panel pSaisie.add(cSaisie); conteneur.add("North",pSaisie ); //On ajoute les boutons des chiffres au panel pChiffre pChiffre.add(bUn); pChiffre.add(bDeux); pChiffre.add(bTrois); pChiffre.add(bQuatre); pChiffre.add(bCinq); pChiffre.add(bSix); pChiffre.add(bSept); pChiffre.add(bHuit); pChiffre.add(bNeuf); pChiffre.add(bZero); pChiffre.add(bPoint); pChiffre.add(bC); pChiffre.add(bAbout); //On définit le Layout de disposition pour pChiffre // 5 lignes et 3 colonnes, puis on ajoute le panel pChiffre dans la zone Centre du conteneur général GridLayout dispositionChiffres = new GridLayout(5, 3); pChiffre.setLayout(dispositionChiffres); conteneur.add("Center",pChiffre ); //On ajoute les opérateurs au panel pSigne pSigne.add(bDiv); pSigne.add(bFois); pSigne.add(bMoins); pSigne.add(bPlus); pSigne.add(bEgal); //On lui definit la disposition GridLayout // soit à déposer en 5 ligne et une seule colonne GridLayout dispositionSignes = new GridLayout(5,1); pSigne.setLayout(dispositionSignes); //On ajoute pSigne à l'est du panel général conteneur.add("East",pSigne); } public void actionPerformed(ActionEvent evt) { String operateur = "+-*/"; //Les opérateurs String chiffres = "0123456789."; //Les chiffres //cas où on a appuyé sur un bouton chiffre //on cumule la saisie dans la variable cRes //Ex. si on a appuyé sur 2 puis sur 5, on aura la chaine "25" dansla variable cRes if ( chiffres.indexOf(evt.getActionCommand()) != -1 ) { //X.indexOf(Y) renvoie la position de Y dans X, et renvoie -1 si Y ne se trouve pas dans X cRes = cRes + evt.getActionCommand(); // getActionCommand donne le contenu du bouton. cSaisie.setText(cRes); //On l'affiche } else // Si le boutton de l'événement est un operateur if ( operateur.indexOf(evt.getActionCommand()) != -1 ) { //On stocke toute la chaine correspondante au chiffre saisie dans un élément du tableau stocRes[i] = cRes; i++; //On incremente l'indice stocRes[i] = evt.getActionCommand(); //Puis on sauvegrade l'operateur i++; //on avance dans le tableau cRes = ""; //Puis on remis la variable qui stocke la chaine à vide. } else //cas où on a appuyé sur le boutton = if ( evt.getActionCommand().equals("=") ) { double leResultat = 0; //Cas particulier : //Si on a rien saisi, on initialise la variable cRes à 0 if ( cRes.equals("") ) { cRes = "0"; } stocRes[i] = cRes; i++; //On calcule l'expression via la méthode calculer() leResultat = calculer(); //S'il y a erreur on affiche le message Erreur comme résultat if ( erreur ) { cSaisie.setText("Erreur "); } else { //Sinon on affiche la variable leResultat renvoyée par la fonction calculer() cSaisie.setText(""+leResultat); } } else //cas où on a appuyé sur le bouton 'C' if ( evt.getActionCommand().equals("C") ) { //On initialise cRes et on vide le tableau stocRes via la méthode vidertableau() cRes = "0"; cSaisie.setText(cRes); vidertableau(); } else //cas où on a appuyé sur le bouton '?' //On affiche la boite A propos if ( evt.getActionCommand().equals("?") ) { aPropos.setVisible(true); } } //Cette méthode évolue l'expression contenue dans le tableau stockRes public double calculer() { erreur = false; //Par défaut, il n y a pas d'erreur double resultat = 0; try { //On initialise le résultat au premier élément du tableau resultat = Double.parseDouble(stocRes[0]); //Si l'exception est rencontré la variable erreur est mise à true } catch(Exception e) { erreur = true; return 0; } // On parcoure le tableau et on procède comme suit pour évoluer l'expression : // soit cette expression à évoluer : 45+32-7 // le résultat est initialisé au premier élément soit : 45, puis on rencontre un operateur (+) dans notre cas. // On somme la variable resultat avec stocRes[j+1], c'est à dire l'élément qui vient après l'operateur, soit 45+32 // et on le met dans resultat, soit 77, puis on rencontre l'opérateur "-" et on évolue l'expréssion par (resultat - 7) // soit 77-7. et on met 70 dans la variable resultat. // l'opération varie bien sur selon l'operateur rencontré for(int j=0; j<= i-1; j++) { try { //Opérateur + rencontré if ( stocRes[j].equals("+") ) { resultat = resultat + Double.parseDouble(stocRes [j+1]) ; j++; }else //Opérateur - rencontré if ( stocRes[j].equals("-") ) { resultat = resultat - Double.parseDouble(stocRes [j+1]) ; j++; }else //Opérateur * rencontré if ( stocRes[j].equals("*") ) { resultat = resultat * Double.parseDouble(stocRes [j+1]) ; j++; }else //Opérateur / rencontré if ( stocRes[j].equals("/") ) { resultat = resultat / Double.parseDouble(stocRes [j+1]) ; j++; } }catch (Exception e) { erreur = true; //Il ya une erreur quelques part, on initialise erreur à true resultat = 0; //Attention l'expression doit être correcte pour l'évaluer sans erreur } } return resultat; } //Cette méthode vide le tableau stockRes public void vidertableau() { for ( int j = 0; j<= stocRes.length-1;j++ ) { stocRes[j] = ""; i=0; } } public static void main(String[] args) { new Calculatrice().setVisible(true); } } Dernière modification par kmdkaci ; 02/10/2008 à 13h14. |
|
00
|
|
|
#88 | |
|
Invité régulier
![]() |
Une méthode super simple pour afficher un nombre sur un certain nombre de caractères et de remplir avec des zéros les caractères vides.
Exemple: Citation:
Code :
public String fillZero(long i, int length){ return (length>Long.toString(i).length())?"0"+fillZero(i,length-1):Long.toString(i); } Il y a d'autres méthodes, mais mon benchmark montre que c'est plus rapide. http://www.genericsystem.com/web/act...ites/fill-zero |
|
|
|
00
|
|
|
#89 | |
![]() Inscription: janvier 2005
Messages: 2 720
|
Citation:
Sérieusement, une méthode avec StringBuilder, ou meme remplir soi-même un tableau doit être bien plus rapide |
|
|
|
00
|
|
|
#90 | |
![]() Inscription: avril 2002
Messages: 10 834
|
Citation:
Code :
public static String fillZero(long i, int length) { // On convertie en String de manière tout à fait normale : String str = Long.toString(i); final int strLen = str.length(); // Si la chaine est plus courte que la taille voulu if (strLen<length) { // On crée un nouveau buffer à la taille voulu : final char[] cbuf = new char[length]; // On remplaces les éléments manquants par des zéros : Arrays.fill(cbuf, 0, length-strLen, '0'); // Et on recopies les chars de la chaine qu'on a créé : str.getChars(0, strLen, cbuf, length-strLen); // Juste avant de recréer une nouvelle String : str = new String(cbuf); } return str; } a++
__________________
adiGuba (blog & tutoriels) | Rédacteur/Modérateur Java Blog : Projet Coin : Les modifications du langage pour Java 7 | Java 7 : petit état des lieux du projet Lambda... |
|
|
00
|
|
|
#91 |
![]() Inscription: janvier 2005
Messages: 2 720
|
Merci adiGuba, j'ai eu la flemme
|
|
|
00
|
|
|
#92 | |
|
Invité régulier
![]() |
Citation:
et le résultat est sans appel: elle est deux fois plus rapide. Voir le benchmark que j'ai publié ici Merci adiGuba pour cette belle idée.
|
|
|
|
00
|
|
|
#93 | |
![]() Inscription: avril 2002
Messages: 10 834
|
Citation:
Car une différence de quelques millisecondes sur près d'un million d'appel c'est vraiment négligeable dans la plupart des applications (à part si on fait des traitements intensives). a++
__________________
adiGuba (blog & tutoriels) | Rédacteur/Modérateur Java Blog : Projet Coin : Les modifications du langage pour Java 7 | Java 7 : petit état des lieux du projet Lambda... |
|
|
00
|
|
|
#94 |
|
Membre actif
![]() Inscription: juillet 2007
Localisation: Toulouse, Tarascon sur Ariège
Messages: 191
|
Salut,
voici une frame qui passe en plein écran et qui n'utilise pas le thread d'affichage d'awt. Ainsi vous pouvez faire du monotache plein écran (dit comme ça c'est peu engageant, mais pour faire du jeu vidéo c'est très pratique). Par défaut, Alt-F4 permet de quitter. Code :
import java.awt.*; import javax.swing.*; import java.awt.image.*; import java.awt.event.*; public class FullScreenFrame extends JFrame { // Pour initialiser l'application public static void main(String[] args) { FullScreenFrame fsf = new FullScreenFrame(); while (true) fsf.turn(); } private static final int D_WIDTH = 1024; private static final int D_HEIGHT = 768; private static final int D_DEPTH = 32; private static final int BUFFERS = 3; private static final Cursor hiddenCursor = Toolkit.getDefaultToolkit().createCustomCursor(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB), new Point() , ""); private static final Cursor defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR); private boolean close; private BufferStrategy buffStrat; private Rectangle drawBounds; private Cursor currentCursor; private KeyListener keyListener; private MouseListener mouseListener; private MouseMotionListener mouseMotionListener; private MouseWheelListener mouseWheelListener; // Constructeur avec paramètres par défaut public FullScreenFrame() { this(D_WIDTH, D_HEIGHT, D_DEPTH); } // Constructeur public FullScreenFrame(int width, int height, int depth) { super(""); // Le titre ne sera pas visible close = false; // Indicateur de fermeture de fenêtre : fenêtre ouverte setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Alt-F4 : quitter addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { close = true; // Indicateur de fermeture de fenêtre : fermeture fenêtre } }); setUndecorated(true); // Pas de bordures ni boutons setResizable(false); // Interdiction de changement de taille setFocusable(true); // Peut recevoir lengthfocus clavier setVisible(true); // Est visible setFocusTraversalKeysEnabled(false); // Recevoir les touches de gestion du focus (tab) requestFocus(); // Demander le focus clavier DisplayMode displayMode = getNearestCompatibleDisplayMode(width, height, depth); // Mode d'affichage le plus adapté setFullScreen(this, displayMode); // Passage en plein écran createBufferStrategy(BUFFERS); // Stratégie de gestion mémoire graphique : cycle de 3 buffers buffStrat = getBufferStrategy(); // Récupération de la stratégie de rafraîchissement drawBounds = getBounds(); // Zone affichable keyListener = new KeyAdapter() {}; // Gestion clavier mouseListener = new MouseAdapter() {}; // Gestion souris mouseMotionListener = new MouseMotionAdapter() {}; mouseWheelListener = new MouseWheelListener() { public void mouseWheelMoved(MouseWheelEvent e){} }; addKeyListener(keyListener); addMouseListener(mouseListener); addMouseMotionListener(mouseMotionListener); addMouseWheelListener(mouseWheelListener); } // Méthode pour gérer les paramètres de l'application public void live() { } // Méthode pour dessiner l'application public void draw(Graphics2D g, Rectangle r) { g.setColor(Color.pink); g.fill(r); } // Un tour de calculs pour la fenêtre et l'application associée public void turn() { live(); // calcul paramètres draw((Graphics2D)buffStrat.getDrawGraphics(), drawBounds); // affichage if ((!buffStrat.contentsLost()) && (!buffStrat.contentsRestored())) // si la mémoire graphique est correcte buffStrat.show(); // afficher lengthcontenu de la mémoire graphique if (close) // si fenêtre en cours de fermeture processClose(); // fermer } // fermeture de la fenêtre private void processClose() { setStartingDisplayMode(); // retour au mode d'affichage initial setCursor(null); // curseur par défaut dispose(); // libérer les ressources de la frame System.exit(0); // sortir } // Affichage du curseur souris ================================================= public void setCursor(Cursor c) { if (c == currentCursor) return; super.setCursor(c); currentCursor = c; } public void hideCursor() { setCursor(hiddenCursor); } public void showCursor() { setCursor(defaultCursor); } // Gestion des modes d'affichage et du plein écran ============================= private static GraphicsDevice graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); private static DisplayMode startingDisplayMode = graphicsDevice.getDisplayMode(); private static DisplayMode currentDisplayMode = graphicsDevice.getDisplayMode(); private static DisplayMode[] availableDisplayModes = graphicsDevice.getDisplayModes(); private static GraphicsConfiguration[] availableGraphicsConfigurations = graphicsDevice.getConfigurations(); public static int getDefaultWidth() { return startingDisplayMode.getWidth(); } public static int getDefaultHeight() { return startingDisplayMode.getHeight(); } private static double getDefaultRatio() { return (double)getDefaultWidth() / (double)getDefaultHeight(); } private static int getDefaultBitDepth() { return startingDisplayMode.getBitDepth(); } public static DisplayMode getNearestCompatibleDisplayMode(int width, int height) { return getNearestCompatibleDisplayMode(width, height, getDefaultBitDepth()); } public static DisplayMode getNearestCompatibleDisplayMode(int width, int height, int bitDepth) { return getNearestCompatibleDisplayMode(width, height, bitDepth, false); } private static DisplayMode getNearestCompatibleDisplayMode(int width, int height, int bitDepth, boolean keepRatio) { DisplayMode bestDisplayMode = startingDisplayMode; double ratio = getDefaultRatio(); int dx = getDefaultWidth() - width; int dy = getDefaultHeight() - height; int d = Integer.MAX_VALUE; if ((dx >=0) && (dy >= 0)) d = dx + dy; int bestD = d; int n = availableDisplayModes.length; DisplayMode dm; double r; for (int i = 0 ; i < n ; i++) { dm = availableDisplayModes[i]; r = (double)dm.getWidth() / (double)dm.getHeight(); if (((r == ratio) || (!keepRatio)) && (dm.getBitDepth() >= bitDepth)) { dx = dm.getWidth() - width; dy = dm.getHeight() - height; d = Integer.MAX_VALUE; if ((dx >=0) && (dy >= 0)) d = dx + dy; if (d <= bestD) { bestDisplayMode = dm; bestD = d; } } } return bestDisplayMode; } public static boolean setFullScreen(Window wi, DisplayMode dm) { boolean ok = graphicsDevice.isFullScreenSupported(); System.out.println("Full screen supported : " + ok); if (ok) graphicsDevice.setFullScreenWindow(wi); else return false; ok = graphicsDevice.isDisplayChangeSupported(); System.out.println("Display change supported : " + ok); if (ok) { try { graphicsDevice.setDisplayMode(dm); } catch (Exception e) { currentDisplayMode = startingDisplayMode; graphicsDevice.setDisplayMode(startingDisplayMode); graphicsDevice.setFullScreenWindow(null); return false; } } else return false; currentDisplayMode = dm; return true; } public static void setStartingDisplayMode() { if (currentDisplayMode == startingDisplayMode) return; currentDisplayMode = startingDisplayMode; graphicsDevice.setDisplayMode(startingDisplayMode); graphicsDevice.setFullScreenWindow(null); } } Code :
import java.awt.*; import java.awt.event.*; public class HelloWorld extends FullScreenFrame implements MouseMotionListener { public static void main(String[] args) { HelloWorld hello = new HelloWorld(); while (true) hello.turn(); } private int frames; private long startDate; private double fps; private int xMouse; private int yMouse; public HelloWorld() { super(640, 480, 32); frames = 0; startDate = System.currentTimeMillis(); addMouseMotionListener(this); // hideCursor(); } public void live() { frames++; fps = (double)frames * 1000d / (double)(System.currentTimeMillis() - startDate); } public void draw(Graphics2D g, Rectangle r) { super.draw(g,r); g.setColor(Color.blue); g.drawString("HELLO WORLD", r.width / 3, r.height / 3); g.drawString("(Alt-F4 pour quitter)", r.width / 3, r.height / 3 + 20); g.drawString("fps : " + fps, xMouse, yMouse); g.drawString("2009, Sylvain Tournois - http://sylv.tournois.free.fr/", 0, r.height - 33); } public void mouseMoved(java.awt.event.MouseEvent mouseEvent) { xMouse = mouseEvent.getX(); yMouse = mouseEvent.getY(); } public void mouseDragged(java.awt.event.MouseEvent mouseEvent) { } }
__________________
__________________________________ | + | Sylvain Tournois - Création logicielle. | | http://www.anadoncamille.com/ | Dernière modification par anadoncamille ; 12/11/2009 à 02h36. Motif: gestion du focus clavier, réception de la touche TAB |
|
|
00
|
|
|
#95 |
|
Membre actif
![]() Inscription: juillet 2007
Localisation: Toulouse, Tarascon sur Ariège
Messages: 191
|
Bonjour,
voici une des classes dont j'utilise le plus souvent les services dans mes projets. C'est un Mini-OS regroupant des services bien utiles : - recherche de fichiers - copie et création de fichiers - effacement de fichiers - deltree - nettoyage de disque - zip - unzip Le voici, il n'est pas très commenté mais très fonctionnel et disponible : Code :
import java.io.*; import java.util.*; import java.text.*; import java.util.zip.*; public class MiniOS { // nettoie les disques c, d, e et f public static void main(String[] args) { String f0 = "monFichier.mp3"; // Un gros fichier (2 - 10 Mo) String f1 = "monFichier.jpg"; // Un fichier moyen (20 - 100 Ko) String f2 = "monFichier.txt"; // Un petit fichier (1 octet) cleanEmptySpaces("c", false, f0, f1, f2); // Remplit c: cleanEmptySpaces("d", false, f0, f1, f2); // Remplit d: cleanEmptySpaces("e", false, f0, f1, f2); // Remplit e: cleanEmptySpaces("f", false, f0, f1, f2); // Remplit f: delTree("c:\temp"); // Libère c: delTree("d:\temp"); // Libère d: delTree("e:\temp"); // Libère e: delTree("f:\temp"); // Libère f: } // nettoie un disque, si solo=true le répertoire temp est supprimé directement, // sinon l'algorithme est plus efficace avec plusieurs lecteurs en faisant // les effacements en groupé à la fin public static void cleanEmptySpaces(String diskLetter, boolean solo, String f0, String f1, String f2) { System.out.println("\nRC Pro __oPRo__ :\n=================\n\nScan de " + diskLetter + ":"); String d = diskLetter + ":/temp"; System.out.print("Ecrasemment : "); String[] cs = {"\\", "|", "/", "-"}; int i = 0; while (writeTempFile(f0, diskLetter)) { i++; System.out.print("\b" + cs[i % 4]); } while (writeTempFile(f1, diskLetter)) { i++; System.out.print("\b" + cs[i % 4]); } while (writeTempFile(f2, diskLetter)) { i++; System.out.print("\b" + cs[i % 4]); } System.out.println("\baplani."); if (solo) delTree(d); } // Copie un fichier dans le répertoire temp public static boolean writeTempFile(String sourceFile, String diskLetter) { return copyFile(sourceFile, diskLetter + ":/temp/FNEC_" + System.currentTimeMillis() + ".tmp", false); } // Copie un fichier src dans dst public static boolean copyFile(String src, String dst) { return copyFile(src, dst, true); } // Copie un fichier src dans dst, renvoie false si la copie a échoué public static boolean copyFile(String src, String dst, boolean verbose) { try { RandomAccessFile raf = new RandomAccessFile(src, "r"); int n = (int)raf.length(); byte[] data = new byte[n]; raf.readFully(data); raf.close(); createFile(dst); raf = new RandomAccessFile(dst, "rw"); raf.setLength(0); raf.write(data); raf.close(); } catch (Exception e) { if (verbose) e.printStackTrace(); return false; } return true; } // Copie de src dans dst les fichiers *.* public static void copyDirectory(String src, String dst) { System.out.println("Copying tree " + src + " in " + dst); copyDirectory(src, dst, "*"); } // Copie de src dans dst les fichiers *.extension public static void copyDirectory(String src, String dst, String ext) { copyDirectory(src, dst, "", ext); } // Copie de src dans dst les fichiers start*.extension public static void copyDirectory(String src, String dst, String start, String ext) { Vector v = getFileList(src, start, ext); int n = v.size(); String s; String d; for (int i = 0 ; i < n ; i++) { s = (String)v.get(i); d = dst + s.substring(src.length()); copyFile(s, d); printPercent(i, n); } } // Efface directory et son contenu public static void delTree(String directory) { System.out.println("Deleting tree " + directory); deleteFiles(directory, "*"); deleteDirectory(directory); } // Efface *.* dans directory public static void deleteFiles(String directory) { deleteFiles(directory, "*"); } // Efface *.extension dans directory public static void deleteFiles(String directory, String extension) { deleteFiles(directory, "", extension); } // Efface start*.extension dans directory public static void deleteFiles(String directory, String start, String extension) { System.out.println("Deleting " + directory + "/" + start + "*." + extension); File f; Vector v = getFileList(directory, start, extension); int n = v.size(); for (int i = 0 ; i < n ; i++) { f = new File((String)v.get(i)); f.delete(); printPercent(i, n); } } // Efface un fichier public static void deleteFile(String s) { System.out.println("Deleting " + s); File f = new File(s); f.delete(); } // Renvoie la liste des dossiers dans directory public static Vector getDirectoryList(String directory) { Vector result = new Vector(); File f = new File(directory); File[] list = f.listFiles(new DirFileFilter()); if ((list != null) && (list.length != 0)) for (int i = 0 ; i < list.length ; i++) result.add(list[i].getName()); return result; } // Renvoie la liste de *.extension dans directory public static Vector getFileList(String directory, String extension) { return getFileList(directory, "", extension); } // Renvoie la liste de start*.extension dans directory public static Vector getFileList(String directory, String start, String extension) { Vector result = new Vector(); File f = new File(directory); File[] list = f.listFiles(new DirFileFilter()); if ((list != null) && (list.length != 0)) for (int i = 0 ; i < list.length ; i++) result.addAll(getFileList(f.getPath() + "\\" + list[i].getName(), extension)); list = f.listFiles(new GenFileFilter(start, extension)); String n; if ((list != null) && (list.length != 0)) for (int i = 0 ; i < list.length ; i++) { n = reduceFileName(f.getPath() + "\\" + list[i].getName()); result.add(n); } return result; } // Compression du dossier directory dans directory.zip public static void zip(String directory) { System.out.println("(c) 2009 Sylvain Tournois - www.anadoncamille.com"); System.out.println("Archiving directory " + directory + " in file " + directory + ".zip :"); try { FileOutputStream fos = new FileOutputStream(directory + ".zip"); ZipOutputStream zos = new ZipOutputStream(fos); Vector entries = getFileList(directory, "*"); int n = entries.size(); String s; String s2; ZipEntry ze; RandomAccessFile raf = null; byte[] bb; int l = directory.length() + 1; for (int i = 0 ; i < n ; i++) { s = (String)entries.get(i); // System.out.print(" " + s.substring(Math.max(0, s.length() - 20), s.length())); s2 = s.substring(l); raf = new RandomAccessFile(s, "r"); bb = new byte[(int)raf.length()]; raf.read(bb); ze = new ZipEntry(s2); zos.putNextEntry(ze); zos.write(bb); raf.close(); printPercent(i, n); } zos.finish(); System.out.println("\nArchiving done. Thank you for using me!"); } catch (Exception e) { e.printStackTrace(); } } // Dézippe une archive archive.zip dans le dossier archive public static void unzip(String file) { try { String directory = file.substring(0, file.lastIndexOf(".")) + "/"; System.out.println("(c) 2009 Sylvain Tournois - www.anadoncamille.com"); System.out.println("Extracting file " + file + " in directory " + directory + " :"); ZipFile zf = new ZipFile(file); ZipEntry ze; Hashtable ht = new Hashtable(); int nf = 0; Enumeration e = zf.entries(); for ( ; e.hasMoreElements() ; ) { ze = (ZipEntry)e.nextElement(); ht.put(ze.getName(), ze); nf++; } RandomAccessFile raf = new RandomAccessFile(file, "r"); byte[] bb = new byte[(int)raf.length()]; raf.read(bb); raf.close(); ByteArrayInputStream bais = new ByteArrayInputStream(bb); ZipInputStream zis = new ZipInputStream(bais); ze = zis.getNextEntry(); String s; int i; int n; int l; int n2 = 0; while (ze != null) { ze = (ZipEntry)ht.get(ze.getName()); s = directory + ze.getName(); bb = new byte[(int)ze.getSize()]; i = 0; l = bb.length; while (l > 0) { n = zis.read(bb, i, l); i += n; l -= n; } createFile(s); raf = new RandomAccessFile(s, "rw"); raf.write(bb); raf.close(); ze = zis.getNextEntry(); printPercent(n2, nf); n2++; } } catch (Exception e) { e.printStackTrace(); } System.out.println("\nExtracting done. Thank you for using me!"); } // Simplifie un nom de fichier public static String reduceFileName(String s) { String s2 = s.replace('\\', '/'); String[] words = s2.split("/"); boolean[] ok = new boolean[words.length]; for (int i = 0 ; i < words.length ; i++) ok[i] = true; for (int i = words.length - 1 ; i >= 0 ; i--) { if (words[i].equals("..")) { int j = i - 1; while ((j >= 0) && ((words[j].equals("..")) || (!ok[j]))) j--; if (j >= 0) { ok[i] = false; ok[j] = false; } } } s2 = ""; for (int i = 0 ; i < words.length - 1 ; i++) if (ok[i]) s2 += words[i] + "/"; return s2 + words[words.length - 1]; } // Crée un fichier et son chemin d'accès public static void createFile(String fileName) { if (fileName.indexOf('/') > 0) { File f = new File(fileName.substring(0, fileName.lastIndexOf('/'))); f.mkdirs(); } File f = new File(fileName); try { FileWriter fw = new FileWriter(fileName, false); fw.close(); } catch (Exception e) { } } // Affiche un message de progression public static void printPercent(float step, float stepsCount) { float step_1 = step + 1; int percent = Math.round(step_1 * 100 / stepsCount); if (percent >= 100) percent = 99; String message = "" + percent + "%"; if (percent < 10) message = " " + message; if (step_1 >= stepsCount) message = "job done, " + (int)stepsCount + " steps. \n"; else message = message + " - " + getHour() + " - step " + (int)(step_1) + "/" + (int)stepsCount; System.out.print("\r"); if (step == 0) System.out.println(" " + getHour() + " Starting job."); if (step_1 >= stepsCount) System.out.print(" " + getHour()); System.out.print(" Working : " + message); } // Affiche l'heure public static String getHour() { return new SimpleDateFormat("HH:mm:ss").format(new Date()); } // Efface l'arborescence des dossiers dans directory private static void deleteDirectory(String directory) { File f; Vector v = getDirectoryList(directory); int n = v.size(); for (int i = 0 ; i < n ; i++) deleteDirectory(directory + "/" + (String)v.get(i)); f = new File(directory); f.delete(); } // Classe filtre pour fichiers private static class GenFileFilter implements FileFilter { private String start; private String extension; private boolean allFiles; private boolean allExts; public GenFileFilter(String ext) { start = ""; extension = new String(ext); extension = extension.toLowerCase(); allExts = extension.equals("*"); allFiles = allExts; } public GenFileFilter(String s, String ext) { start = new String(s); start = start.toLowerCase(); extension = new String(ext); extension = extension.toLowerCase(); allExts = extension.equals("*"); allFiles = allExts && start.equals("*"); } public boolean accept(java.io.File file) { if (!file.isFile()) return false; if (allFiles) return true; String n = file.getName(); if (n.length() < start.length()) return false; n = n.toLowerCase(); String tst = n.substring(0, start.length()); if (!tst.equals(start)) return false; if (allExts) return true; if (n.lastIndexOf(".") < 0) return false; tst = n.substring(n.lastIndexOf(".") + 1, n.length()); return tst.equals(extension); } } // Classe filtre pour répertoires private static class DirFileFilter implements FileFilter { public DirFileFilter() { } public boolean accept(java.io.File file) { return file.isDirectory(); } } } commande format et nettoyage disque dur
__________________
__________________________________ | + | Sylvain Tournois - Création logicielle. | | http://www.anadoncamille.com/ | Dernière modification par anadoncamille ; 26/01/2009 à 22h04. |
|
|
00
|
|
|
#96 |
![]() Inscription: juin 2006
Localisation: Luxembourg
Messages: 6 981
|
Salut,
Tu ne veux pas plutôt dire que c'est un explorateur ?
__________________
Je ne répondrai à aucune question technique en privé |
|
00
|
|
|
#97 |
![]() Inscription: août 2004
Localisation: Paris
Âge: 30
Messages: 6 707
|
Faudrait peut être éviter de localiser la classe sous windows, (par exemple pour la création du fichier temporaire).
Peut être propager les exceptions également.
__________________
Alors, j'suis pourrave ou j'suis pourrave? Mais ce n'est pas pour autant que j'accepte les questions techniques par MP... Pareil pour MSN |
|
|
00
|
|
|
#98 |
|
Membre actif
![]() Inscription: juillet 2007
Localisation: Toulouse, Tarascon sur Ariège
Messages: 191
|
Cela me ferait grand plaisir de l'appeler explorateur mais il n'en a que les fonctionnalités et aucune interface. En tout cas moyennant une interface, pour sûr il peut servir un explorateur.
Je l'ai appelé Mini OS en souvenir de ce bon vieux DOS. Dans mon projet cette classe s'appelle KOS (K1000 OS). Pour la localisation sous windows, cette localisation ne concerne que le nettoyeur de disque et est proposée en exemple d'utilisation. C'est facilement transposable en Linux ou Mac. Le reste des méthodes est non localisé. Pour la propagation des exceptions, je l'évite pour créer des méthodes tendant vers la gestion autonome, c'est à dire que dans la mesure du possible je traite les exceptions dans la méthode elle-même. C'est très rare que je propage les exceptions, mais c'est un choix de programmation parfaitement discutable. Je vous donne Mini-OS telle que je l'utilise. Vous pouvez la modifier et l'améliorer pour qu'elle soit plus adaptée à vos besoins.
__________________
__________________________________ | + | Sylvain Tournois - Création logicielle. | | http://www.anadoncamille.com/ | |
|
|
00
|
|
|
#99 | |
|
Invité régulier
![]() Inscription: juin 2008
Messages: 14
|
Citation:
vous avez utilisez monfichier.txt de 1 octet cad un fichier mais pour le cas de un dossier qui contient de plus de 1000 fichier .txt j'arrive pas a le ouvrir ,par la méthode ouvrire suivanteje peut ouvrir un seule fichier.txt : Code :
void ouvrir(){ String path = new String(""); jFileChooser jFileChooser1 = new jFileChooser(); if (JFileChooser.APPROVE_OPTION == jFileChooser1.showOpenDialog(this)) { path = jFileChooser1.getSelectedFile().getPath(); } try {this.setTitle("ouvrir une Corpus de text -"+path); File file = new File(path); int size = (int) file.length(); int chars_read = 0; FileReader in = new FileReader(file); char[] data = new char[size]; while (in.ready()) { chars_read += in.read(data, chars_read, size - chars_read); } in.close(); aaaa = new String(data, 0, chars_read); jTextArea5.append(aaaa); } catch (IOException E) { } } |
|
|
|
00
|
|
|
#100 |
|
Membre actif
![]() Inscription: juillet 2007
Localisation: Toulouse, Tarascon sur Ariège
Messages: 191
|
Bonjour kamilia_85,
Pour ouvrir et lire un fichier texte, vous pouvez utiliser la classe sur le lien suivant : Lecteur de fichiers textes. Cette classe vous permettra de lire tous les fichiers de votre dossier, quel que soit leur nombre. Le code swing que vous utilisez permet de sélectionner les fichiers à ouvrir un par un. Si vous voulez ouvrir plusieurs fichiers en même temps, vous devez utiliser un algorithme de recherche fonctionnant comme la commande DOS Code :
dir *.txt
Code :
Vector listeFichiers = MiniOS.getFileList("monDossier", "txt"); String fichier; for (int n = 0 ; i < listeFichiers.size() ; i++) { fichier = (String)v.get(i); ... votre code ; }
__________________
__________________________________ | + | Sylvain Tournois - Création logicielle. | | http://www.anadoncamille.com/ | |
|
|
00
|