Pb JAVA : REPONSE !!!
zebiloute
Messages postés
105
Date d'inscription
Statut
Membre
Dernière intervention
-
wafacom -
wafacom -
Il y a une semaine, j'ai poser une question : Comment gérer dynamiquement des composant JAVA.
Hors Pas de réponse à ce jours. Heureusemùent, une âme charitable (Quebecquoise) ma donner la réponse. Donc si cela peut intéresser quelqu'un voici l'exemple pour remplacer dynamiquement un bouton par un autre. Ceci est applicable pour n'importe quel comosant !!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author Administrateur
* @version
*/
public class AppletTest extends javax.swing.JApplet implements ActionListener{
public AppletTest() {
initComponents();
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton1.setText("jButton1");
jButton1.addActionListener(this);
jButton1.setActionCommand("jButton1 Cliqué");
getContentPane().add(jButton1, java.awt.BorderLayout.NORTH);
}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getActionCommand().equals("jButton1 Cliqué")){
// On rend le bouton invisible avant de le detruire
jButton1.setVisible(false);
// laisse le bouton apparent, mais inactif
getContentPane().remove(jButton1);
// On détruire l'instantiation mémoire
jButton1 = null;
jButtonEx = new javax.swing.JButton();
jButtonEx.setText("jButtonEx");
jButtonEx.setBounds(0, 0, 60,30);
getContentPane().add(jButtonEx, java.awt.BorderLayout.SOUTH);
System.out.println(this.getLayout());
}
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButtonEx;
}
Quand ça veut Po ça veut po !!!
- Et ben y a plus qu'à attendre -
Hors Pas de réponse à ce jours. Heureusemùent, une âme charitable (Quebecquoise) ma donner la réponse. Donc si cela peut intéresser quelqu'un voici l'exemple pour remplacer dynamiquement un bouton par un autre. Ceci est applicable pour n'importe quel comosant !!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author Administrateur
* @version
*/
public class AppletTest extends javax.swing.JApplet implements ActionListener{
public AppletTest() {
initComponents();
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton1.setText("jButton1");
jButton1.addActionListener(this);
jButton1.setActionCommand("jButton1 Cliqué");
getContentPane().add(jButton1, java.awt.BorderLayout.NORTH);
}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getActionCommand().equals("jButton1 Cliqué")){
// On rend le bouton invisible avant de le detruire
jButton1.setVisible(false);
// laisse le bouton apparent, mais inactif
getContentPane().remove(jButton1);
// On détruire l'instantiation mémoire
jButton1 = null;
jButtonEx = new javax.swing.JButton();
jButtonEx.setText("jButtonEx");
jButtonEx.setBounds(0, 0, 60,30);
getContentPane().add(jButtonEx, java.awt.BorderLayout.SOUTH);
System.out.println(this.getLayout());
}
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButtonEx;
}
Quand ça veut Po ça veut po !!!
- Et ben y a plus qu'à attendre -
A voir également:
- Pb JAVA : REPONSE !!!
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
13 réponses
Je voudrais utiliser la methode removeRange de la classe Vector en java mais le compilateur me dit que la methode removeRange est invisible (surement car elle est protected )
Mais comment faire pour la rendre visible
Mais comment faire pour la rendre visible
Oui j ai consulté le source de la classe Vector la méthode est effectivement protected.
Je ne sais pas pq?
Sinon voici le code source de cette méthode (copier/coller)
protected void removeRange(int fromIndex, int toIndex) {
modCount++;
int numMoved = elementCount - toIndex;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
numMoved);
// Let gc do its work
int newElementCount = elementCount - (toIndex-fromIndex);
while (elementCount != newElementCount)
elementData[--elementCount] = null;
}
Je ne sais pas pq?
Sinon voici le code source de cette méthode (copier/coller)
protected void removeRange(int fromIndex, int toIndex) {
modCount++;
int numMoved = elementCount - toIndex;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
numMoved);
// Let gc do its work
int newElementCount = elementCount - (toIndex-fromIndex);
while (elementCount != newElementCount)
elementData[--elementCount] = null;
}
Tu ne saurais pas par hasard comment je peux l'utiliser? Moi j'ai taper le code suivant
Elements etant le tableau que je traite
Peut etre faudrait il que je tape moi meme dans mon code celui que tu viens de me donner ?
Elements.removeRange(0,x-1);
Elements etant le tableau que je traite
Peut etre faudrait il que je tape moi meme dans mon code celui que tu viens de me donner ?
Salut penellope, pour faire plus simple poste ici ton code complet qui pose pb et J essayerai de le corriger et le reposterai ici.
A+
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok je te joins mon code
Je t'ai mis en gras la partie concernant la methode removeRange
Merci d'avance
Je t'ai mis en gras la partie concernant la methode removeRange
Merci d'avance
import java.io.*; import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import java.util.Vector; public class Echo extends DefaultHandler { StringBuffer textBuffer; private Vector Elements = new Vector(); private Vector Levels = new Vector(); private int levelPrec; int compt = 0; private int indentLevel = 0; int x=1; public static void main(String argv[]) { if (argv.length != 0) { System.err.println("Usage: cmd filename"); System.exit(1); } // Use an instance of ourselves as the SAX event handler DefaultHandler handler = new Echo(); // Use the default (non-validating) parser SAXParserFactory factory = SAXParserFactory.newInstance(); try { // Set up output stream out = new OutputStreamWriter(System.out, "UTF8"); // Parse the input SAXParser saxParser = factory.newSAXParser(); saxParser.parse("name.xsd", handler ); } catch (Throwable t) { t.printStackTrace(); } System.exit(0); } static private Writer out; private String indentString = " "; // Amount to indent //private int indentLevel = 0; private void emit(String s) throws SAXException { try { out.write(s); out.flush(); } catch (IOException e) { throw new SAXException("I/O error", e); } } private void nl()throws SAXException { String lineEnd = System.getProperty("line.separator"); try { out.write(lineEnd); for (int i=0; i < indentLevel; i++) out.write(indentString); } catch (IOException e) { throw new SAXException("I/O error", e); } } public void startDocument() throws SAXException { nl(); nl(); emit("\t\tDebut du document"); nl(); emit("<?xml version='1.0' encoding='UTF-8'?>"); } public void endDocument() throws SAXException { nl(); emit("\t\tfin du document"); System.out.println("\n"); //analyse(); try { nl(); out.flush(); } catch (IOException e) { throw new SAXException("I/O error", e); } } public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) throws SAXException { //indentLevel++; nl(); int level; emit("ELEMENT: "); String eName = sName; // element name if ("".equals(eName)) eName = qName; // not namespaceAware emit("<"+eName); if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { String aName = attrs.getLocalName(i); // Attr name if ("".equals(aName)) aName = attrs.getQName(i); if (qName.equals("xs:element")|qName.equals("xsd:element")) { if (aName.equals("name")|aName.equals("ref")){ nl(); //indentLevel++; emit(" ATTR: "); emit(aName); emit("\t\""); emit(attrs.getValue(i)); if(compt == 0) { SOP("\n==0"); saveLevel(indentLevel); saveElement(attrs.getValue(i)); writeToFile(attrs.getValue(i),"entete\n"); } if(compt >0) { saveLevel(indentLevel); saveElement(attrs.getValue(i)); writeToFile(attrs.getValue(i),"entete\n"); SOP("\n>0"); if(levelPrec==indentLevel-1) { Elements.removeRange(0,x-1); SOP("levelPrec==indentLevel-1"); SOP("--------------------------dans "+Elements.get(levelPrec)+" va s'ecrire "+Elements.get(indentLevel)); writeToFile(Elements.get(levelPrec),Elements.get(indentLevel)+"\n"); SOP("indent:"+indentLevel+" prec:"+levelPrec); x=1; } if(levelPrec == indentLevel) { SOP("levelPrec==indentLevel"); SOP("--------------------------dans "+Elements.get(levelPrec-1)+" va s'ecrire "+Elements.get(indentLevel+x)); writeToFile(Elements.get(levelPrec-1),Elements.get(indentLevel+x)+"\n"); SOP("indent:"+indentLevel+" prec:"+levelPrec); x++; SOP("x: "+x); } } emit("\""+" indent: "+indentLevel); levelPrec=indentLevel; indentLevel++; compt++; } } } } if (attrs.getLength() > 0) nl(); emit(">"); } public void endElement(String namespaceURI, String sName, // simple name String qName // qualified name ) throws SAXException { String eName=sName; nl(); emit("Fin element: "); emit("<"+eName+">"); if (qName.equals("xs:element")|qName.equals("xsd:element")) { indentLevel--; levelPrec=indentLevel; } } private void echoText() throws SAXException { nl(); emit("CHARS: "); String s = ""+textBuffer; if (!s.trim().equals("")) emit(s); } /*Cette methode permet de creer un fichier .xsl(feuille de style ) d'ecrire a l'interieur toute les données necessaires a son utilisation*/ public void writeToFile(Object fileName,Object txt) //write into the correct file { try { FileWriter fw = new FileWriter(fileName+".xsl",true); BufferedWriter bw = new BufferedWriter(fw); bw.write(""+txt); bw.close(); } catch (IOException e){ System.out.println("exception"+e); } } public void saveElement(String elementSave){ Elements.addElement(new String(elementSave)); } public void saveLevel(int elementSave){ Levels.addElement(new Integer(elementSave)); } public void SOP(String s) { System.out.println(s); } public Vector getElements() { return Elements; } public Vector getLevels() { return Levels; } public int getLevelPrec() { return levelPrec; } }
une petite définition de protected??
protected : méthodes, variables (protected n’est pas autorisé pour les classes) déclarées « protected » ne sont accessibles que par les méthodes de la classe et des sous-classe du package de l’objet de défintion.
Chouba
Casque Bleu forumique
protected : méthodes, variables (protected n’est pas autorisé pour les classes) déclarées « protected » ne sont accessibles que par les méthodes de la classe et des sous-classe du package de l’objet de défintion.
Chouba
Casque Bleu forumique
ce qui signifie en fait que cette méthode est utilisée par les autres méthodes de la classe vector et quelle ne peut pas être appelée autrement. Ceci dit tu peux étendre la classe Vector et l'utiliser à ce moment là dans tes méthodes de la sous classe.
Chouba
Casque Bleu forumique
Chouba
Casque Bleu forumique
Si ell est protected si qu il ya une raison donc on evite le bidouillage.
Et bien tu n as qu a simuler la méthode
Elements.removeRange(0,x-1);
par ceci
//efface depusi deb inclus jusqu à ex exclus
public void removeRange(int deb, int ex)
{
for(int j=deb; j<ex; j++) Elements.removeElementAt(i);
}
Je l ai pass essayé mais je pense que c bon nan?
A+
Et bien tu n as qu a simuler la méthode
Elements.removeRange(0,x-1);
par ceci
//efface depusi deb inclus jusqu à ex exclus
public void removeRange(int deb, int ex)
{
for(int j=deb; j<ex; j++) Elements.removeElementAt(i);
}
Je l ai pass essayé mais je pense que c bon nan?
A+
une autre solution est de créer un classe MonVecteur avec une methode publique XXX et qui étends vector
Chouba
Casque Bleu forumique
public class MonVecteur extends Vector{ public void nomDeMethode(int x, int y){ super.removeRange(x,y); } }
Chouba
Casque Bleu forumique
j y ai pensé choubaka mais ca me pose 2 question:s
-si elle est protected c pas pour rien don cfaire un extended c un peu bidouiller
-chui meme pas sur que le extende marche car lui appele une méthode protected.. on revient au départ!!
-si elle est protected c pas pour rien don cfaire un extended c un peu bidouiller
-chui meme pas sur que le extende marche car lui appele une méthode protected.. on revient au départ!!
on ne peut pas appeler ça du bidouillage...
vu que protected peut être utilisé par la sous-classe, donc...
ça reste en interne, l'objet faisant appel à
ne sait pas qu'il utilise une méthode protected, pas de prob
Chouba
Casque Bleu forumique
vu que protected peut être utilisé par la sous-classe, donc...
ça reste en interne, l'objet faisant appel à
public void nomDeMethode(int x, int y){
ne sait pas qu'il utilise une méthode protected, pas de prob
Chouba
Casque Bleu forumique
Merci pour vos solutions
J'avais deja essayer ta solution choubaka mais comme le disais Omar ca ne marche pas car meme si la methode protected est utilisable dans les sous classe a pparement mon programme ne la voie pas (je ne comprend pad pourqu'oi mais bon...)
Finalement j'ai simuler le fonctionnement de la methode removeRange et ca marche parfaitement bien
Encore merci beaucoup pour votre aide
Penellope
J'avais deja essayer ta solution choubaka mais comme le disais Omar ca ne marche pas car meme si la methode protected est utilisable dans les sous classe a pparement mon programme ne la voie pas (je ne comprend pad pourqu'oi mais bon...)
Finalement j'ai simuler le fonctionnement de la methode removeRange et ca marche parfaitement bien
Encore merci beaucoup pour votre aide
Penellope