J'ai copié un code java swing sur un tuto et Eclipse me renvoi un warning sur try_catch: "la partie gauche doit être une variable + erreur de syntaxe" (ligne 191) . Pouvez-vous m'aider à résoudre ce problèmes?
Merci pour vos réponses.
ps: joint fichier
package fr.DVP.InterfaceSwing;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.ImageObserver;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
/*Classe définissant une fenêtre permettant d'illustrer l'utilisation des
différents composants, des événements et de l'utilisation d'un thread */
/*******************************************************************************/
/**************** Définition des composants de l'interface *********************/
/*******************************************************************************/
@SuppressWarnings("serial")
public class EvenementInterface extends JFrame { //fenêtre principale
private JMenuBar laBarre; //la barre de menu de cette fenêtre
private JMenu menuAffiche, menuAide; //les deux rubriques de cette barre
private JMenuItem image, animation; // les sous-rubriques du menu d'affichage
private JMenu menuFonctions; //le sous-menu d'aide
private JMenuItem aPropos, aideAnime, aideImage; //les sous-rubriques du menu d'aide
//et de son sous-menu
private JComboBox<String> choix; //la zone de choix de couleurs
private JCheckBox couleurBalle; //le choix des couleurs concernant la balle
private JTextArea texte; //la zone de texte multi-lignes éditable
private JLabel titre; //un titre pour la liste
private JList<String>liste; //la liste proposant des mots à insérer dans le teste
public ZoneGraphique zoneDeDessin; //endroit ou l'on dessine
private BalleAnimee balleAnimee; //balle que l'on peut animer
private Thread anime; //processus qui fait bouger la balle
private Image photo = null; // photo affichée à la place de la balle
private final int tailleInitiale = 20; //taille initiale de la balle
private JScrollBar ascenseur; //ascenseur permettant de modifier la taille de la balle
private JTextField afficheur; //zone pour afficher et saisir la taille de la balle
private JButton quitter; //bouton pour sortir
/*****************************************************************************/
/************ La classe associés aux événements de la fenêtre***************/
/*****************************************************************************/
public class GestionFenetre extends WindowAdapter {
public synchronized void WindowClosing (WindowEvent e) { //fermeture de la fenêtre
System.exit(0); //arrêt du programme
}
}
/******************************************************************************/
/****** Les classes associées aux événements des composants de l'interface ****/
/******************************************************************************/
// classe associée aux événements de la rubrique "Image" du menu "Affichage"
public class ActionImage implements ActionListener {
private final String repaint = null;
public synchronized void actionPerformed1 (ActionEvent e) { //choix de la rubrique
balleAnimee.desactiver(); //la balle n'est plus utilisable
//on affiche la photo à la place
zoneDeDessin.obtenirGraphics().drawImage(photo, 2, 2, (ImageObserver) zoneDeDessin );
zoneDeDessin.repaint();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Stub de la méthode généré automatiquement
}
}
//classe associée aux événements de la rubrique "Animation" du menu "Affichage"
public class ActionAnimation implements ActionListener {
private int height;
private int width;
public synchronized void actionPerformed (ActionEvent e) { //choix de la rubrique
balleAnimee.activer(); //la balle est à nouveau utilisable
//effacer l'image
zoneDeDessin.obtenirGraphics().clearRect(0, 0,
zoneDeDessin.getSize().width, zoneDeDessin.getSize().height);
balleAnimee.tracer(zoneDeDessin); //faire ré-appaître la balle
}
}
//classe associée aux événements de la rubrique "Aide" du menu "?"
class ActionPropos implements ActionListener {
//on définit un message à afficher
private final String messageDAide = new String("Ceci est une démonstration d'interface/n pour illustrer les divers composants/n et leur utilisation");
public synchronized void actionPerformed (ActionEvent e) { //choix de la rubrique
JTextArea texte = new JTextArea();
texte.setText(messageDAide); //on affiche ce message dans la zone de texte
}
}
//classe associée aux événements de la rubrique "Image" du sous-menu "Fonctions" du men "Aide"
class ActionAideImage implements ActionListener { //on définit un message à afficher
private final String messageDAide = new String("Affiche une photo dans la zone graphique");
public synchronized void actionPerformed (ActionEvent e) { //choix de la rubrique
JTextArea texte = new JTextArea();
texte.setText(messageDAide); //on affiche ce message dans la zone de texte
}
}
//classe associée aux événements de la rubrique "Anime" du sous-menu "Fonctions" du men "Aide"
class ActionAideAnime implements ActionListener { //on définit un message à afficher
private final String messageDAide = new String("Réalise une animation dans la zone graphique/n");
public synchronized void actionPerformed (ActionEvent e) { //choix de la rubrique
JTextArea texte = new JTextArea();
texte.setText(messageDAide); //on affiche ce message dans la zone de texte
}
}
//classe associée aux événements du bouton "Quitter"
class ActionQuitter implements ActionListener {
public synchronized void actionPerformed (ActionEvent e) { //clic sur le bouton
System.exit(0); //arrêt du programme
}
}
//classe associée aux événements de la zone de choix de couleurs
class ActionChoix implements ActionListener {
public synchronized void actionPerformed (ActionEvent e) { //un choix est fait
@SuppressWarnings("rawtypes")
JComboBox choix = new JComboBox();
String coul = (String)choix.getSelectedItem(); //le texte qui a été choisi
Color couleurChoisie = new Color(255, 255, 255); //on va créer la couleur correspondante
if (coul.equals("rouge")) couleurChoisie = new Color(255, 0, 0); //c'est du rouge
if (coul.equals("bleu")) couleurChoisie = new Color(0, 0, 255); //c'est du bleu
if (coul.equals("vert")) couleurChoisie = new Color(80, 255, 0); //c'est du vert
if (coul.equals("noir")) couleurChoisie = new Color(0, 0, 0); //c'est du noir
texte.setForeground(couleurChoisie); //le texte prend la couleur choisie
if (couleurBalle.isSelected()) { //la case "couleur de balle" est cochée
zoneDeDessin.setForeground(couleurChoisie); //la balle aussi change de couleur
balleAnimee.tracer(zoneDeDessin); //on la redessine de la nouvelle couleur
}
}
//classe associée aux événements de modification du texte multi-lignes
class ActionTexte implements DocumentListener {
public synchronized void insertUpdate(DocumentEvent e) { //insertion
texte.setForeground(new Color(0, 100, 150)); //on change la couleur de ce texte
}
public synchronized void changeUpdate(DocumentEvent e) { //modification
//aucun traitement n'y est associé
}
//classe associée aux événements de sélection d'un élément dans la liste
class ActionListe implements ListSelectionListener {
@SuppressWarnings("rawtypes")
public synchronized void valueChanged(ListSelectionEvent e) { //sélection d'un élément
if (!e.getValueIsAdjusting()) { //si la sélection est terminé
JTextArea texte = new JTextArea();
JList liste = new JList();
//on insere cet élément dans le le texte à la position du curseur
texte.insert((String)liste.getSelectedValue() + " ", texte.getCaretPosition());
}
}
//classe associée aux événements de modification de l'affichage de la taille de la balle
class ActionAfficheur implements ActionListener {
JScrollBar ascenseur;
ZoneGraphique zoneDeDessin;
BalleAnimee balleAnimee;
JTextField afficheur;
private static final int tailleInitiale = 20;
private static final int valeur = 0;
public synchronized void actionPerformed (ActionEvent e) { //modification du texte
int valeur; //la future taille de la balle
try {( valeur = Integer.parseInt(afficheur.getText()));} //conversion de la valeur saisie
catch (NumberFormatException enf) {valeur = tailleInitiale;}//en cas d'erreur
ascenseur.setValue(valeur); //l'ascenseur est ajusté pour correspondre à cette valeur
balleAnimee.effacer(zoneDeDessin); //on efface la balle actuelle
balleAnimee.definirTaille(valeur); //on en modifie la taille
balleAnimee.tracer(zoneDeDessin); //on la redessine
}
}
//classe associée aux événements de modification de la position de l'ascenseur
class ActionAscenseur implements AdjustmentListener {
JScrollBar ascenseur;
JTextField afficheur;
BalleAnimee balleAnimee;
ZoneGraphique zoneDeDessin;
public synchronized void adjustmentValueChanged(AdjustmentEvent e) { //modification
//affichage de la nouvelle valeur dans la zone de texte mono-ligne associé
afficheur.setText(String.valueOf(ascenseur.getValue()));
balleAnimee.effacer(zoneDeDessin); //on efface la balle actuelle
balleAnimee.definirTaille(ascenseur.getValue()); //on en modifie la taille
balleAnimee.tracer(zoneDeDessin); //on la redessine
}
}
//classe associée aux événements souris dans la fenêtre de dessin
class ClicDeSouris extends MouseAdapter {
public synchronized void mouseEntered(MouseEvent e) {
//un son est joué lors de l'entrée de la souris dans la fenêtre de dessin
URL fichierSon = null ;
try {
fichierSon = new URL("file:ding.wav"); //acces au fichier
}catch (MalformedURLException mue) {
System.out.println("url incorrect");
}
AudioClip son = Applet.newAudioClip(fichierSon); //créer un clip audio
son.play(); //le jouer
e.consume(); /*l'événement a été pris en compte*/
}
public synchronized void mousePressed(MouseEvent e) {//bouton appuyé
BalleAnimee balleAnimee = null;
ZoneGraphique zoneDeDessin = null;
if (! BalleAnimee.enMouvement) {
//on crée un processus (thread) qui va l'animer
Thread anime = new Thread();
BougeBalle(zoneDeDessin, balleAnimee, e.getX(), e.getY());
anime.start(); //on lance ce processus d'animation
}
e.consume(); /*l'événement a été pris en compte*/
}
public void BougeBalle(ZoneGraphique zoneDeDessin,
BalleAnimee balleAnimee, int x, int y) {
}
}
}
@Override
public void changedUpdate(DocumentEvent arg0) {
// TODO Stub de la méthode généré automatiquement
}
@Override
public void removeUpdate(DocumentEvent arg0) {
// TODO Stub de la méthode généré automatiquement
}
}
}
}
En cas d'exception la stacktrace est indispensable, et si tu copies/colles le code associé indique la ligne correspondante. En cas de warning c'est pareil : le message et la ligne associée
Évite de joindre un aussi gros bloc de code : épure tout ce qui ne nous servira pas, ne garde que la ligne ou la méthode concernés. En plus il y a plein de dépendances que l'on n'a pas, donc on ne peut pas reproduire le bug.
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
Erreur de syntaxe, insérez "( )" pour effectuer ArgumentList
addActionListener() prend quoi comme argument ? De quel type est la classe ActionAideImage ?
zatopec a écrit:
La méthode setLayout(GridBagLayout) est indéfinie pour le type Object
Il y a un problème d'appel de la méthode setLayout(). getContentPane est quoi ? une variable ou un attribut ? une méthode qui retourne un objet de quel type ?
zatopec a écrit:
La méthode setConstraints(Component, GridBagConstraints) du type GridBagLayout ne s'applique pas aux arguments (ZoneGraphique, GridBagConstraints)
Quel sont les (plusieurs car surcharges possibles) prototypes possibles pour la méthode setConstraints() ? De quel type sont tes arguments ?
- Edité par Pinguet62 30 juillet 2015 à 21:53:27
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
Je crois que les questions posées par Pinguet62 sont simplement la pour t'aiguiller sur les reflexions que tu dois entreprendre pour trouver ta réponses. Sa démarche est simplement pédagogique ;).
Une fois que tu auras répondues à ces questions tu devrais avoir une idée de solution. Si jamais tu as toujours besoin d'aide, je pense qu'il se fera un plaisir d'y répondre
Cela fonctionne, mais est-ce cette solution? Ca voudrait dire pour moi qu'il n'y a pas de corrélation entre ces deux classe.
Lorsque tu utilise des classes qui sont dans des packages, il faut les importer pour qu'elles soient reconnues. Donc oui, c'est la solution. Attention tout de même à vérifier quand tu importe que ce soit bien la bonne classe (il y a pas parfois plusieurs classes avec le même nom)
Merci pour ta réponse, je ne savais pas qu'il fallait importer les classes internes (classe interne d'EvénementInterface) dans une autre fenêtre (classe Fenetre).
Je pars dimanche pour une semaine donc à bientôt sur le forum.
Je re viens sur le problème d'erreurs que je n'arrive pas à corriger. Voici la partie du code concerné:
zoneDeDessin.setPreferredSize(new Dimension(300, 200));
contraintes.gridx = 0; //coordonnée 0
contraintes.gridy = 1; //coordonnée 1
contraintes.gridwidth = 1; //1 case
contraintes.gridheight = 1;
contraintes.weightx = 100;
contraintes.weighty = 100;
placeur.setConstraints(zoneDeDessin, contraintes);
getContentPane().add(zoneDeDessin); //placement de la zone de dessin
Voici la stacktrace
Exception in thread "main" java.lang.Error: Problèmes de compilation non résolus :
La méthode setConstraints(Component, GridBagConstraints) du type GridBagLayout ne s'applique pas aux arguments (ZoneGraphique, GridBagConstraints)
La méthode add(Component) du type Container ne s'applique pas aux arguments (ZoneGraphique)
at fr.DVP.InterfaceSwing.FenetreInterface.<init>(FenetreInterface.java:199)
at fr.DVP.InterfaceSwing.Main.main(Main.java:6)
Merci par avance de votre aide.
Mieux vaut tard que jamais.
Débutant java SE 8
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.