JApplet et JPanel

jtmarin Messages postés 21 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 5 mai 2004 - 3 févr. 2004 à 23:09
cs_Taquilla Messages postés 8 Date d'inscription mardi 5 novembre 2002 Statut Membre Dernière intervention 16 avril 2004 - 16 avril 2004 à 10:43
Help,
J'ai un gros pb que je ne comprend pas du tout avec JApplet.
En gros, si j'ajoute le JPanel au moment de la méthode init(), pas de problème mais par contre si je l'ajoute plus tard ou que je le supprime puis que j'en ajoute un autre, la suppression marche mais après ajout il n'y a rien et aucune exception n'est lancée
Voici le code:

package colibri;

import javax.swing.*;
import java.awt.*;

import java.util.Vector;

import ihm.*;
import calculs.*;
import popup.*;
import util.*;

public class Colibri extends JApplet
{

/* Declaration de tous les composants de l'application
*
*/
public ScenarioPanel panneauScenario1;
public Scenario2Panel panneauScenario2;
public PanneauCourbes thePanneauCourbes;

public void init()
{
initComponents();
lancerScenario();
}

private void initComponents()
{
this.setSize(new java.awt.Dimension(800,600));
this.getContentPane().setBackground(new Color(204,204,204));
getContentPane().setLayout(new java.awt.FlowLayout());

}
public void lancerScenario()
{
panneauScenario1 = new ScenarioPanel(this);
panneauScenario1.setPreferredSize(new java.awt.Dimension(800,600));
getContentPane().add(panneauScenario1);
}
public void suiteScenario()
{
panneauScenario2 = new Scenario2Panel(this);

panneauScenario2.setPreferredSize(new java.awt.Dimension(800,600));
getContentPane().remove(panneauScenario1);
getContentPane().add(panneauScenario2);

repaint();
}

public static void main(String args[]) {
Colibri application = new Colibri();
application.show();
}

}

le depart marche mais l'appel a suiteScenario foire...

7 réponses

cs_arN34 Messages postés 7 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 26 juillet 2004
4 févr. 2004 à 09:56
est-ce qu'on pourrait voir ta classe Scenario2Panel ?
Visiblement, ça vient de là.
Essaye de remplacer panneauScenario2 = new Scenario2Panel(this);
par panneauScenario2 = new ScenarioPanel(this);
pour voir.
Si ça marche, c'est que ça vient de ta classe Scenario2Panel.

arN34
0
jtmarin Messages postés 21 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 5 mai 2004
4 févr. 2004 à 10:12
La Classe Scenario2Panel est exactement la meme que ScenarioPanel, aux etiquettes et aux boutons près. Ca ne marche pas non plus avec ScenarioPanel. Seuls les ajouts dès init() marchent.
Voici son code:

package ihm;

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.*;
import java.awt.event.*;
import util.*;
import colibri.Colibri;

public class Scenario2Panel extends JPanel
implements ActionListener
{

private Colibri parent;
/* Declaration des composants de la 2e partie du Scenario
* (apres avoir appuyé sur "suite")
*/

JButton boutonFinir;
JTextField jTextField2;
JLabel labelOu;
JLabel labelNbPucerons;
JTextField fieldPourcentage;
JLabel labelPourcentage;
JTextField fieldStade;
JLabel labelStade;
JTextField fieldDate;
JLabel labelDate;
JTextField fieldNom;
JLabel labelScenario;
JLabel labelNomParcelle;
ImagedPanel panelFond;

public Scenario2Panel(Colibri p) {
parent = p;
initGUI();
}

public void initGUI() {
try {
preInitGUI();

panelFond = new ImagedPanel("ihm/Acceuil.jpg");
labelNomParcelle = new JLabel();
labelScenario = new JLabel();
fieldNom = new JTextField();
labelDate = new JLabel();
fieldDate = new JTextField();
labelStade = new JLabel();
fieldStade = new JTextField();
labelPourcentage = new JLabel();
fieldPourcentage = new JTextField();
labelNbPucerons = new JLabel();
labelOu = new JLabel();
jTextField2 = new JTextField();
boutonFinir = new JButton();
BorderLayout thisLayout = new BorderLayout();
//this.getContentPane().setLayout(thisLayout);
setLayout(thisLayout);
thisLayout.setHgap(0);
thisLayout.setVgap(0);

//this.getContentPane().setBackground( new java.awt.Color(229, 229, 229));

setBackground( new java.awt.Color(229, 229, 229));
panelFond.setLayout(null);
panelFond.setVisible(true);
panelFond.setBackground(new java.awt.Color(229, 229, 229));
panelFond.setForeground(new java.awt.Color(0, 51, 153));
//this.getContentPane().add(panelFond);
add(panelFond);
labelNomParcelle.setLayout(null);
labelNomParcelle.setText("Nom de la parcelle:");
labelNomParcelle.setVisible(true);
labelNomParcelle.setForeground(new java.awt.Color(0, 51, 153));
labelNomParcelle.setPreferredSize(new java.awt.Dimension(128, 20));
labelNomParcelle.setBounds(
new java.awt.Rectangle(72, 204, 128, 20));
panelFond.add(labelNomParcelle);
labelScenario.setLayout(null);
labelScenario.setText("Nouveau Scenario:");
labelScenario.setVisible(true);
labelScenario.setForeground(new java.awt.Color(0, 51, 153));
labelScenario.setPreferredSize(new java.awt.Dimension(128, 20));
labelScenario.setBounds(new java.awt.Rectangle(24, 170, 128, 20));
panelFond.add(labelScenario);
fieldNom.setVisible(true);
fieldNom.setForeground(new java.awt.Color(0, 51, 153));
fieldNom.setPreferredSize(new java.awt.Dimension(162, 20));
fieldNom.setBounds(new java.awt.Rectangle(255, 205, 162, 20));
panelFond.add(fieldNom);
labelDate.setLayout(null);
labelDate.setText("Date d'observation:");
labelDate.setVisible(true);
labelDate.setForeground(new java.awt.Color(0, 51, 153));
labelDate.setPreferredSize(new java.awt.Dimension(128, 20));
labelDate.setBounds(new java.awt.Rectangle(71, 235, 128, 20));
panelFond.add(labelDate);
fieldDate.setVisible(true);
fieldDate.setForeground(new java.awt.Color(0, 51, 153));
fieldDate.setPreferredSize(new java.awt.Dimension(162, 20));
fieldDate.setBounds(new java.awt.Rectangle(255, 235, 162, 20));
panelFond.add(fieldDate);
labelStade.setLayout(null);
labelStade.setText("Stade du blé:");
labelStade.setVisible(true);
labelStade.setForeground(new java.awt.Color(0, 51, 153));
labelStade.setPreferredSize(new java.awt.Dimension(128, 20));
labelStade.setBounds(new java.awt.Rectangle(71, 265, 128, 20));
panelFond.add(labelStade);
fieldStade.setVisible(true);
fieldStade.setForeground(new java.awt.Color(0, 51, 153));
fieldStade.setPreferredSize(new java.awt.Dimension(162, 20));
fieldStade.setBounds(new java.awt.Rectangle(255, 265, 162, 20));
panelFond.add(fieldStade);
labelPourcentage.setLayout(null);
labelPourcentage.setText("Pourcentage d'épis attaqués");
labelPourcentage.setVisible(true);
labelPourcentage.setForeground(new java.awt.Color(0, 51, 153));
labelPourcentage.setPreferredSize(new java.awt.Dimension(175, 20));
labelPourcentage.setBounds(
new java.awt.Rectangle(71, 355, 175, 20));
panelFond.add(labelPourcentage);
fieldPourcentage.setVisible(true);
fieldPourcentage.setForeground(new java.awt.Color(0, 51, 153));
fieldPourcentage.setPreferredSize(new java.awt.Dimension(162, 20));
fieldPourcentage.setBounds(
new java.awt.Rectangle(255, 355, 162, 20));
panelFond.add(fieldPourcentage);
labelNbPucerons.setLayout(null);
labelNbPucerons.setText("Nombre de pucerons par épis:");
labelNbPucerons.setVisible(true);
labelNbPucerons.setForeground(new java.awt.Color(0, 51, 153));
labelNbPucerons.setPreferredSize(new java.awt.Dimension(175, 20));
labelNbPucerons.setBounds(new java.awt.Rectangle(71, 295, 175, 20));
panelFond.add(labelNbPucerons);
labelOu.setLayout(null);
labelOu.setText("ou");
labelOu.setVisible(true);
labelOu.setForeground(new java.awt.Color(0, 51, 153));
labelOu.setPreferredSize(new java.awt.Dimension(175, 20));
labelOu.setBounds(new java.awt.Rectangle(71, 325, 175, 20));
panelFond.add(labelOu);
jTextField2.setVisible(true);
jTextField2.setForeground(new java.awt.Color(0, 51, 153));
jTextField2.setPreferredSize(new java.awt.Dimension(162, 20));
jTextField2.setBounds(new java.awt.Rectangle(255, 296, 162, 20));
panelFond.add(jTextField2);
boutonFinir.setText("Finir");
boutonFinir.setVisible(true);
boutonFinir.setBackground(new java.awt.Color(229, 229, 229));
boutonFinir.setForeground(new java.awt.Color(0, 51, 153));
boutonFinir.setPreferredSize(new java.awt.Dimension(162, 20));
boutonFinir.setOpaque(false);
boutonFinir.setBounds(new java.awt.Rectangle(500, 385, 162, 20));
panelFond.add(boutonFinir);

postInitGUI();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Add your pre-init code in here
*/
public void preInitGUI() {
}
/**
* Add your post-init code in here
*/
public void postInitGUI() {
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
}

public void actionPerformed(ActionEvent evt)
{
Object source = evt.getSource();
if(source == boutonFinir)
parent.resultats();

}

}
0
jtmarin Messages postés 21 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 5 mai 2004
4 févr. 2004 à 10:14
Nb: il y a deux ou trois commentaires qui correspondent a une version dépréciée où le paneau etait une applet independante.
0
jtmarin Messages postés 21 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 5 mai 2004
4 févr. 2004 à 21:43
Désolé, apparament c'est en fait un probmème de repaint.
En effet ayant mis un repaint() jai cru que c'était suffisant et avec la fatigue je n'ai pas pensé à forcer la fenêtre à se repeindre en changeant la dimension par ex.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jtmarin Messages postés 21 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 5 mai 2004
4 févr. 2004 à 21:52
Pour l'instant j'ai mis un très bourrin:

this.setSize(new java.awt.Dimension(800,599));
this.setSize(new java.awt.Dimension(800,600));

en attendant de trouver mieux. Je ne sais pas quelles sont les autres méthodes que repaint() pour forcer une JApplet à se repeindre, j'ai regardé la doc de l'API mais je n'ai pas trouvé.
0
cs_arN34 Messages postés 7 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 26 juillet 2004
5 févr. 2004 à 14:29
je ne suis pas très fort en Applet, désolé. Mais si ta méthode marche, laisse couler, un jour peut-être tu trouveras une solution en cherchant tout autre chose (vaut mieux pas rester bloqué sur un problème trop longtemps, on tourne souvent en rond).

A+

arN34
0
cs_Taquilla Messages postés 8 Date d'inscription mardi 5 novembre 2002 Statut Membre Dernière intervention 16 avril 2004
16 avril 2004 à 10:43
Lu

Après l'ajout ou la supression d'un JPanel(ou un Component), il faut utiliser la méthode updateUI() de ton JPanel (ou de ton Component)

a+
0
Rejoignez-nous