essaie ca alorsCode:Desktop.browse(new URI("www.machin.com"));
-----
essaie ca alorsCode:Desktop.browse(new URI("www.machin.com"));
ce qui est bizarre car à par la methode main, il n'y a aucun static dans tout le code.Code:non static method browse can not be referenced from stic context
bonsoir,
dans un autre programme ça me dit:
comment corriger ces erreurs? sinon y a-til autre moyen d'appeler une URL?Code:can not find symbol Symbol: varialbe desktop Location: class english
Bonjour,
j'ai une autre solution, que j'ai testée sous linux et sous windows :
va sur cette page http://www.javaworld.com/javaworld/j...javatip66.html
et recopie le code de la classe BrowserControl (donné au milieu de la page)
ensuite dans ton code, il suffit de rajouterPour les plateforme unix, j'ai juste modifié mozilla par firefox.Code:BrowserControl.displayURL("http://www.javaworld.com");
Sinon sur windows, c'est le navigateur par defaut qui est lancé.
ps : cette méthode static peut etre appelé depuis une méthode static ou non!
merci aneldo,
ça a resolu mon probleme
bonjour,
Argh!&%? je vais devenir fou.
je programme sur un PC dont l'ecran est de dimention 16/10. une fois mon programme fait. j'ai remarqué qu'il etait tronqué avec un ecran classique 4/3. j'ai donc mis tout le contenu de la frame dans un jpanel et le jpanel dans un jscrollpane, en esperant qu'en redimenstionnant la frame un curseur apparaitra pour pouvoir quand meme acceder à mes composants.
mon probleme est le suivant: apres execution si je redimentionne la fenetre, le scrollpane ne suit pas, il est tronqué. je reviens à l'IDE, et je met une contrainte entre les bords de la frame et le srcollpane et là lorsque j'execute j'ai deux assenceurs qui tronquent, une partie du scrollpane, pourtant j'ai bien mis "as needed" et non "always" pour leur affichage.
je voudrais que, lors du lancement du programme, il n'y ait aucun assenceur. que ceux ci ne s'affiche qu'au cas ou l'utilisateur redimentionne la fenetre et que le scrollpane soit sur la totalité de la frame (pas de marge). ou reside le probleme?
merci.
je me suis trompé de fichier(ancienne version):
bonjour,
Aneldo, Gre, jepoirrier, stran, si vous passez par le coin...
merci. a binetot
Salut Einstein, quelle version de java utilises tu?
Je n'arrive pas à compiler avec la 1.4
et je ne peux pas essayer avec une version supérieur avant demain soir.
Bonjour,
Avec Java 1.6, je n'arrive pas à compiler non plus. Je vois que c'est un projet NetBeans, aucun problème pour l'ouvrir (version 5.5.1) mais il me fait des erreurs à la compilation également. C'est probablement du au fait qu'il ne sait pas ouvrir le formulaire que tu as fait (en version 6.0 ?).
En relisant la description de ton problème, je me suis demandé pourquoi tu ne mettrais pas directement tes composants dans la JFrame avec des propriétés de redimensionnement comme le permet Matisse. Ainsi, si la fenêtre est réduite, les composants seront également réduits mais on les verra toujours tous. Perso, je coderais également directement pour un écran 4/3 : ils sont majoritaires par rapport aux 16/9.
bonjour,
j'utilise la version 1.6 de JRE.
ce programme je l'ai pait avec netbeans 5.5.1 pas 6.0. bizarre.
formulaire? tu parle du fichier XML? c'est juste un fichier excel exporté vers XML.C'est probablement du au fait qu'il ne sait pas ouvrir le formulaire que tu as fait
ou peut etre parle-tu de ceci:
j'ai cette note lors de la compilation mais le programme se lance sans probleme apres.Note: C:\...\src\flexion.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
en effet, si c'est faisable, ce serait mieux. je vais bidouiller un peu pour voir si j'y arrive.En relisant la description de ton problème, je me suis demandé pourquoi tu ne mettrais pas directement tes composants dans la JFrame avec des propriétés de redimensionnement comme le permet Matisse. Ainsi, si la fenêtre est réduite, les composants seront également réduits mais on les verra toujours tous.
c'est juste une question de disponibilité. mais il est vrai que j'aurais du prendre ça en compte avant de commencer.Perso, je coderais également directement pour un écran 4/3 : ils sont majoritaires par rapport aux 16/9.
je joindrais tout le dossier du projet dans la soirée.
sinon j'ai une autre question:
j'ai bouton. je veux que, tant que la sourie est cliquée dessus, le programme repete les actions suivantes:
j'ai donc fais:Code:step=1; try { Double.parseDouble(jTextField16.getText()); } catch(NumberFormatException e) { JOptionPane.showMessageDialog(null,"Invalid Entries"); return; } F3=Double.parseDouble(jTextField16.getText())+step; jTextField16.setText(Double.toString(round(F3,3)));
mais c'est comme si j'ecrivais "while(true)", et ca fait une boucle infinie (pas bon).Code:private void jButton6MousePressed(java.awt.event.MouseEvent evt) { mousedown=true; while(mousedown){ step=1; try..... } } } private void jButton6MouseReleased(java.awt.event.MouseEvent evt) { mousedown=false; }
si j'ecris "if(mousedown)", ca ne fait pas de boucle.
je cherche une methode qui, tant que la sourie est cliquée, repete une certaine suite d'actions.
pour preciser, je cherche à ajouter des "1" à un double tant que le bouton est cliqué. dès que je lache le bouton il arrete d'ajouter. ça devrait ressembler à ceci:
mericCode:private void jButton6MousePressed(java.awt.event.MouseEvent evt) { [........]{ Nombre+=1; } } private void jButton6MouseReleased(java.awt.event.MouseEvent evt) { [...................... ......................] }
bonsoir,
remoi,
je n'ai pas trouver comment faire.En relisant la description de ton problème, je me suis demandé pourquoi tu ne mettrais pas directement tes composants dans la JFrame avec des propriétés de redimensionnement comme le permet Matisse. Ainsi, si la fenêtre est réduite, les composants seront également réduits mais on les verra toujours tous.
ci-joint, tout le dossier, en esperant que cette fois ça marchera.
merci
Je pense que c'est la bonne méthode. Ce n'est pas vraiment une boucle infinie car la variable mousedown repasse à false lorsque l'on lache le boutton de la sourie.sinon j'ai une autre question:
j'ai bouton. je veux que, tant que la sourie est cliquée dessus, le programme repete les actions suivantes:
j'ai donc fais:
mais c'est comme si j'ecrivais "while(true)", et ca fait une boucle infinie (pas bon).Code:private void jButton6MousePressed(java.awt.event.MouseEvent evt) { mousedown=true; while(mousedown){ step=1; try..... } } } private void jButton6MouseReleased(java.awt.event.MouseEvent evt) { mousedown=false; }
si j'ecris "if(mousedown)", ca ne fait pas de boucle.
je cherche une methode qui, tant que la sourie est cliquée, repete une certaine suite d'actions.
pour preciser, je cherche à ajouter des "1" à un double tant que le bouton est cliqué. dès que je lache le bouton il arrete d'ajouter. ça devrait ressembler à ceci:
mericCode:private void jButton6MousePressed(java.awt.event.MouseEvent evt) { [........]{ Nombre+=1; } } private void jButton6MouseReleased(java.awt.event.MouseEvent evt) { [...................... ......................] }
Si la boucle s'exécute trop vite, rajoute unrien deCode:try { Thread.sleep(10); // temps en miliseconde } catch (InterruptedException ex) { ex.printStackTrace(); }
bonjour Aneldo,
je pense que mousedown ne trouve pas le temps de passer à folse et reste ainsi dans la boucle.
j'ai le gestionnaire de tache qui fonctionne en meme temps. quand j'appuis sur le bouton aucun "1" ne s'ajoute à mon nombre, et il reste enfoncé quant je relache, et plus rien ne repond. dans le gestionnaire, le processus java.exe consonne 100% du CPU. c'est bien là les symptomes d'une boucle infinie, non?
j'ai ajouté tes lignes, mais ça n'a rien changé:
Code:private void jButton6MousePressed(java.awt.event.MouseEvent evt) { mousedown=true; while(mousedown){ step=1; try { Thread.sleep(10); // temps en miliseconde }catch(InterruptedException ex) { ex.printStackTrace(); } try { Double.parseDouble(jTextField16.getText()); }catch(NumberFormatException e) { JOptionPane.showMessageDialog(null,"Invalid Entries"); return; } switch(jComboBox10.getSelectedIndex()) { case 0: F3=Double.parseDouble(jTextField16.getText())+step; break; case 1: F3=(Double.parseDouble(jTextField16.getText())+step)*1000; break; } if(u==4){ F4=(-f2*(3*E*igz*L)-F3*Math.pow(L1,2)*Math.pow((L-L1),2))/(Math.pow(L2,2)*Math.pow((L-L2),2)); }else if(u==8){ F4=(-f2*(12*E*igz*L)-F3*Math.pow(L1,2)*Math.pow((L-L1),2))/(Math.pow(L2,2)*Math.pow((L-L2),2)); } switch(jComboBox10.getSelectedIndex()) { case 0: jTextField16.setText(Double.toString(round(F3,3))); break; case 1: jTextField16.setText(Double.toString(round(F3/1000,3))); break; } switch(jComboBox11.getSelectedIndex()) { case 0: jTextField17.setText(Double.toString(round(F4,3))); break; case 1: jTextField17.setText(Double.toString(round(F4/1000,3))); break; } } }
en effet, ca ne fonctionne pas.
Désolé,
je vais chercher autre chose alors.
Bonjour,
Une autre solution, peut-être ... Pourquoi ne pas utiliser un JToggleButton et, lorsqu'il change d'état, il lance (ou arrête) un second thread incrémentant ta valeur. Le JToggleButton te permet d'éviter de regarder constamment si ton JButton est appuyé ou non : tu utilises juste les transitions entre états. Et le thread lancé à côté te permet d'éviter de paralyser ton application (c'est généralement le but des threads).
Maintenant, est-ce que cette méthode est la bonne ? Pourquoi cherches-tu à incrémenter cette valeur pendant un certain temps (la durée d'appui sur ton bouton, pour le moment) ? Es-tu conscient que la vitesse d'incrémentation de ton nombre va probablement être différente sur des machines de puissance différentes ? Est-ce que cela a une importance ?
j'ai trouvé
il faut faire un thread pour changer la valeur du jTextField.
voici la classe du Thread
et voici comment s'en servir :Code:import javax.swing.JTextField; public class ThreadIncrementField extends Thread { //----FIELDS---------------------------------------------------------------- private boolean _go = false; private JTextField _jtf; //----CONSTRUCTORS---------------------------------------------------------- /** Creates a new instance of Increment */ public ThreadIncrementField(JTextField jtf) { _jtf = jtf; } //----METHODS--------------------------------------------------------------- public void run() { _go = true; while( _go ) { try { int t = Integer.parseInt(_jtf.getText()); t++; _jtf.setText(Integer.toString(t)); Thread.sleep(20); //pour ne pas aller trop vite et ne pas utiliser 100% de cpu } catch( Exception e ) { System.out.println("c la merde"); //;) } } } public void stopIt() { _go = false; } }
Dans ta classe principale, crée une variable de type ThreadIncrementField et sert toi en dans les jButtonMousePressed et jButtonMouseReleased :
et voila (ca a meme été testé )Code:private ThreadIncrementField _tif; ... ... private void jButton3MousePressed(java.awt.event.MouseEvent evt) { _tif = new ThreadIncrementField( jTextFieldToIncrement ); _tif.start(); } private void jButtonMouseReleased(java.awt.event.MouseEvent evt) { _tif.stopIt(); }
pour info : la bouclen'est pas une boucle infinie car la variable _go repassera à false lors de l'appel de la méthode stopIt().Code:while( _go ) { try { int t = Integer.parseInt(_jtf.getText()); t++; _jtf.setText(Integer.toString(t)); Thread.sleep(20); //pour ne pas aller trop vite et ne pas utiliser 100% de cpu } catch( Exception e ) { System.out.println("c la merde"); //;) } }
Cela évite d'utiliser la méthode stop() qui est déprécié car elle met le thread dans un état inconu en le tuant (en milieu de boucle par exemple)!
edit : croisement avec Jepoirrier
j'explique un peu mon algo:
les variables F3 et F4 sont liées par une relation faisant inteervenir la variable f2.
en fixant f2. on peut avoir des valeurs differentes de F3 et F4 donnat le meme f2.
dans un premier tems je calcule F3 et F4 à partir de f2 pour qu'ils aient la meme valeur:
ensuite je permet à l'utilisateur d'incrementer F3 et en deduire valeur de F4.Code:F3=-12*E*igz*L*f2/(Math.pow(L1,2)*Math.pow((L-L1),2)+Math.pow(L2,2)*Math.pow((L-L2),2)); F4=-12*E*igz*L*f2/(Math.pow(L1,2)*Math.pow((L-L1),2)+Math.pow(L2,2)*Math.pow((L-L2),2));
au depart j'utilisais un jspinner pour incrementer, mais il me donnait des iincrementations grotesques et ne repondant meme pas à ce qu'il affichait:Code:F4=(-f2*(3*E*igz*L)-F3*Math.pow(L1,2)*Math.pow((L-L1),2))/(Math.pow(L2,2)*Math.pow((L-L2),2));
j'utilisais:
il fait deux increments correctes puis il m'ajoute des 2, des 3, des 6, bref du n'importe quoi, et lorque je le rammenais à 0, je n'avais pas la valeur initiale de F3. c'est pourquoi je l'ai chagé par deux jbuttons (un "+" et un "-"). la difference est qu'avec jspinner, tant q'on reste appuié on continue à grimper, alors qu'avec jbutton il faut relacher, et c'est ce que je cherche à contourner.Code:int inc=((Integer)jSpinner2.getValue()).intValue(); F3+=inc
PS: trop rapide le Aneldo
bonsoir,
nerci Aneldo pour cet exemple.
voici ce que j'ai fais pour l'instant:
j'ai une erreur au niveau de "ThreadIncrementField" m'indiquant:Code:/***************/ /***Increment***/ /***************/ class ThreadIncrementField extends Thread { //----FIELDS---------------------------------------------------------------- private boolean _go = false; private JTextField _jtf1; private JTextField _jtf2; private JComboBox _jcb1; private JComboBox _jcb2; private Double _step; private Double _F1; private Double _F2; private Double _f; private Double _E; private Double _igz; private Double _L; private Double _L1; private Double _L2; private boolean _b1; private boolean _b2; //----CONSTRUCTORS---------------------------------------------------------- /** Creates a new instance of Increment */ public ThreadIncrementField(JTextField jtf1,JTextField jtf2,JComboBox jcb1,JComboBox jcb2,Double step,Double F1,Double F2,Double f,Double E,Double igz,Double L,Double L1,Double L2,Boolean b1,Boolean b2) { _jtf1=jtf1; _jtf2=jtf2; _jcb1=jcb1; _jcb2=jcb2; _step=step; _F1=F1; _F2=F2; _f=f; _E=E; _igz=igz; _L=L; _L1=L1; _L2=L2; _b1=b1; _b2=b2; } //----METHODS--------------------------------------------------------------- public void run() { _go = true; while( _go ) { try { switch(_jcb1.getSelectedIndex()) { case 0: _F1 = Double.parseDouble(_jtf1.getText()); break; case 1: _F1 = Double.parseDouble(_jtf1.getText())*1000; break; } _F1+=_step; if(_b1){ _F2=(-_f*(3*_E*_igz*_L)-_F1*Math.pow(_L1,2)*Math.pow((_L-_L1),2))/(Math.pow(_L2,2)*Math.pow((_L-_L2),2)); }else if(_b2){ _F2=(-_f*(12*_E*_igz*_L)-_F1*Math.pow(_L1,2)*Math.pow((_L-_L1),2))/(Math.pow(_L2,2)*Math.pow((_L-_L2),2)); } switch(_jcb1.getSelectedIndex()) { case 0: _jtf1.setText(Double.toString(_F1)); break; case 1: _jtf1.setText(Double.toString(_F1/1000)); break; } switch(_jcb2.getSelectedIndex()) { case 0: _jtf2.setText(Double.toString(_F2)); break; case 1: _jtf2.setText(Double.toString(_F2/1000)); break; } Thread.sleep(20); //pour ne pas aller trop vite et ne pas utiliser 100% de cpu } catch( Exception e ) { System.out.println("CPU à 100%"); } } } public void stopIt() { _go = false; } } /***************/ /*End Increment*/ /***************/ public class flexion extends javax.swing.JFrame { [...] private void jButton6MousePressed(java.awt.event.MouseEvent evt) { if (u==4){ b1=true; }else{ b1=false; } if (u==8){ b2=true; }else{ b2=false; } _tif = new ThreadIncrementField(jTextField16,jTextField17,jComboBox10,jComboBox11,1,F3,F4,f2,E,igz,L,L1,L2,b1,b2); _tif.start(); } private void jButton6MouseReleased(java.awt.event.MouseEvent evt) { _tif.stopIt(); } [...] boolean b1; boolean b2; private ThreadIncrementField _tif; [...] }
can not find symbol
symbol: constructor ThreadIncrementField(JTextFiel d,JTextField,JComboBox,JComboB ox,Double,Double,Double,Double ,Double,Double,Double,Double,D ouble,Boolean,Boolean)
location: class ThreadIncrementField
j'ai rien dit:
=>can not find symbol
symbol: constructor ThreadIncrementField(JTextFiel d,JTextField,JComboBox,JComboB ox,int,Double,Double,Double ,Double,Double,Double,Double,D ouble,Boolean,Boolean)
location: class ThreadIncrementField
_tif = new ThreadIncrementField(jTextFiel d16,jTextField17,jComboBox10,j ComboBox11,1.0,F3,F4,f2,E,igz,L,L1,L2,b1,b2) ;
ca fonctionne mais ca a un aleas:
lorsque j'appuis longtemps puis je relache ca fonctionne correctement, mais si j'appuis brievement de maniere à n'ajouter qu'un seul increment, ca continue à ajouter des increments et pas moyen de l'arreter. j'ai essayé de varier le temps d'attente mais ca n'a rien changé
bonsoir,
Euh! comment dire?
c'est pas jSpinner qui faisait n'importe quoi mais moi qui n'etais pas tres frais apparemment.
notmal qu'il n'incremante pas au pas de 1 puisque sa valeur augmente. il incremente à 1 puis 2 puis 3, etc. j'ai donc fait ceci
ce qui fait que chaque fois que la valeur de jSpinner croit (i1-i2)=1 et chaque fois qu'elle decroit (i1-i2)=-1.Code:private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) { i1=((Integer)jSpinner1.getValue()).intValue(); incr1=(i1-i2)*step1; i2=((Integer)jSpinner1.getValue()).intValue(); try { Double.parseDouble(jTextField16.getText()); }catch(NumberFormatException e) { JOptionPane.showMessageDialog(null,"Invalid Entries"); return; } switch(jComboBox10.getSelectedIndex()) { case 0: F3=Double.parseDouble(jTextField16.getText())+incr1; break; case 1: F3=(Double.parseDouble(jTextField16.getText())+incr1)*1000; break; } [...] }
probleme resolu.
reste juste le truc du redimentionnement de la jframe que je n'ai pas encore resolu.
je n'ai pas trouvé comment faire.En relisant la description de ton problème, je me suis demandé pourquoi tu ne mettrais pas directement tes composants dans la JFrame avec des propriétés de redimensionnement comme le permet Matisse. Ainsi, si la fenêtre est réduite, les composants seront également réduits mais on les verra toujours tous.
il a des images dans la frame, est ce qu'elles seront redimentionnées elles aussi?
merci
bonjour,
quelcun saurait-il comment je pourrais recuperer le contenu de ce dossier sans devoir aller chercher les fichiers un par un?
merci.
http://java3d.netbeans.org/source/browse/java3d/
Bonsoir,
Je regarde dans le menu de droite et je vois l'option Files qui semble contenir des fichiers .zip ou des projets netbeans. Ce ne serait pas cela que tu cherches ?
en effet merci