Throws

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 25 févr. 2004 à 16:33
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 3 mars 2004 à 12:37
j'ai un petit probleme :

j'ai finnis un livre sur le java et je voudrais mettre en application ce que je sais faire donc j'ai voulu creer une sorte d'editeur de texte mais j'ai un petit proble a la derniere classe :
class ouvrirAction implements ActionListener
{

public void actionPerformed(ActionEvent event)
throws FileNotFoundException
{
try
{

ObjectInputStream in = new ObjectInputStream(
new FileInputStream(
new File("save.daedricmemo")));
String resultat = (String)in.readObject();

System.out.println(resultat);
in.close();

}
catch(IOException e)
{
System.out.println("Une IOException a été détectée !");
}

}
}

et si ca peut vous aider voici le code complet:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class memo
{
public static void main(String[] args)
{
TextTestFrame frame = new TextTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}

class TextTestFrame extends JFrame // <- classe interne
{ public void setEntrerArea(JTextArea entrerArea) {
this.entrerArea = entrerArea;
}

public JTextArea getEntrerArea() {
return entrerArea;
}

public TextTestFrame()

{
setTitle("memo java programmer par daedric");
setSize(WIDTH, HEIGHT);

cracktextPanel panel2 = new cracktextPanel();
Container contentPane = getContentPane();
contentPane.add(panel2);
JPanel panel = new JPanel();
entrerArea = new JTextArea(8,40);
scrollPane =new JScrollPane(entrerArea);
contentPane.add(scrollPane,BorderLayout.SOUTH);
panel.add(entrerArea);
entrerArea.setLineWrap(true);

contentPane.add(panel, BorderLayout.SOUTH);

Toolkit kit = Toolkit.getDefaultToolkit();

Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;

setSize(screenWidth / 2, screenHeight / 2);
setLocation(screenWidth / 4, screenHeight / 4);Image img = kit.getImage("mon icone.gif");
setIconImage(img);
JMenuBar menubar= new JMenuBar();
setJMenuBar(menubar);
JMenu files = new JMenu("fichier");
menubar.add(files);
JMenuItem enregistrer = files.add("enregistrer");
enregistrer.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
try
{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("save.daedricmemo"));
out.writeObject(entrerArea);
out.close();
}
catch(IOException e)
{
System.out.println("Une IOException a été détectée !");
}

}
}
);
JMenuItem ouvrir = files.add("ouvrir");
ouvrir.addActionListener(new
ouvrirAction());

JMenu edit = new JMenu("edition");
menubar.add(edit);
JMenu optionMenu = new JMenu("Options");
menubar.add(optionMenu);
edit.addSeparator();
edit.add(optionMenu);
ButtonGroup group = new ButtonGroup();

JRadioButtonMenuItem windows = new JRadioButtonMenuItem("style windows");
windows.setSelected(true);
JRadioButtonMenuItem metal= new JRadioButtonMenuItem("metal");
JRadioButtonMenuItem motif= new JRadioButtonMenuItem("motif");
group.add(windows);
group.add(metal);
group.add(motif);
optionMenu.add(windows);
optionMenu.add(metal);
optionMenu.add(motif);

JMenu help = new JMenu("aide");
menubar.add(help);
help.addSeparator();
JMenuItem aide = help.add("aide");
aide.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if (p == null) // first time
p = new helpDialog(TextTestFrame.this);
p.show(); // pop up dialog
}
});
JMenuItem about = help.add("about");
about.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if (dialog == null) // first time
dialog = new AboutDialog(TextTestFrame.this);
dialog.show(); // pop up dialog
}
});

}
public static final int WIDTH = 300;
public static final int HEIGHT = 300;
public JTextArea entrerArea;
private AboutDialog dialog;
private JScrollPane scrollPane;
private helpDialog p;
public TextTestFrame text;
}

class helpDialog extends JDialog
{
public helpDialog(JFrame owner)
{
super(owner, "aide", true);
Container contentPane = getContentPane();
contentPane.add(new JLabel("<HTML>je pense que je n'ai
"+
"pas besoin d'expliquer comment ca fonctionne</HTML>"
),
BorderLayout.CENTER);
JButton ok = new JButton("Ok");
ok.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
setVisible(false);
}
});
JPanel panel = new JPanel();
panel.add(ok);
contentPane.add(panel, BorderLayout.SOUTH);
setSize(250, 150);
}
}
class AboutDialog extends JDialog
{
public AboutDialog(JFrame owner)
{
super(owner, "", true);
Container contentPane = getContentPane();
contentPane.add(new JLabel(
"<HTML> memo Java
<HR>"
+ "By DAEDRIC</HTML>"),
BorderLayout.CENTER);
JButton ok = new JButton("Ok");
ok.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
setVisible(false);
}
});
JPanel panel = new JPanel();
panel.add(ok);
contentPane.add(panel, BorderLayout.SOUTH);

setSize(250, 150);
}
}

class cracktextPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString("voici un memo programmer en java",MESSAGE_K,MESSAGE_L);

}

public static final int MESSAGE_K = 0;
public static final int MESSAGE_L = 10;

}
class ouvrirAction implements ActionListener
{

public void actionPerformed(ActionEvent event)
throws FileNotFoundException
{
try
{

ObjectInputStream in =new ObjectInputStream(
new FileInputStream(
new File("save.daedricmemo")));
String resultat = (String)in.readObject();

System.out.println(resultat);
in.close();

}
catch(IOException e)
{
System.out.println("Une IOException a été détectée !");
}

}
}

merci pour toutes reponses

15 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
25 févr. 2004 à 17:06
:big) Neodante :big)

Qu'est-ce qu'il te fait de bizzare ... pas le temps de décortiqué ton code un peu long !!!
@+

[Responsable www.neogamedev.com]
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
25 févr. 2004 à 18:39
le compilateur me dit ca :

C:\Documents and Settings\MS\Bureau\memo.java:234: actionPerformed(java.awt.event.ActionEvent) in ouvrirAction cannot implement actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener; overridden method does not throw java.lang.ClassNotFoundException
public synchronized void actionPerformed(ActionEvent event)
^
1 error

Processus terminé avec code quitter 1
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
25 févr. 2004 à 18:40
ps un petit probleme de mise en page le ^ doit etre dessous le actionPerformed
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
26 févr. 2004 à 08:35
Salut,
en fait ton pb c'est que tu reecris la methode actionPerformed car tu implements ActionListener. Tu n'as pas le droit de modifier l'entete de la methode : actionPerformed ne peut pas etre throwns FileNotFoundException, tout comme tu ne peux pas changer et/ou rajouter de parametres en entree de la methode....
Par contre, tu peux lever l'exception FileNotFoundException par ta classe meme en faisant un extends de cette exception (ce n'est pas plus simple),
En regardant ton code, tu duppliqes la levee d'exception (tu fais un try catch dans actionPerformed), donc tu n'as pas besoin de lever l'exception FileNotFoundException si tu le fais a l'interieur de la methode...
sauf si tu veux recuperer en dehors, mais alors supprime le try catch interne !
0

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

Posez votre question
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
26 févr. 2004 à 10:19
:big) Neodante :big)

J'aurais pas dit mieux ...
@+

[Responsable www.neogamedev.com]
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
26 févr. 2004 à 11:38
Neodante : p'etre, mais differemment!
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
26 févr. 2004 à 11:59
:big) Neodante :big)

J'aurais écrit un roman comme j'ai l'habitude d'en écrire de temps en temps ... et puis ton explication est claire rien à dire de plus ... si tu veux je peux le faire mais en plus de mots (j'ai un don pour allonger les phrases !!! lol) :-p
@+

[Responsable www.neogamedev.com]
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
27 févr. 2004 à 18:02
d'ac j'ai compris mais j'ai deja mis un try catch est ce que je peut faire ca :

try
{

ObjectInputStream in =new ObjectInputStream(
new FileInputStream(
new File("save.daedricmemo")));
String resultat = (String)in.readObject();

System.out.println(resultat);
in.close();

}
catch(IOException e)
catch(FileNotFoundException f)

ou comment si jamais mais d'abord merci pour t'as reponse
c'est rare que se soit aussi nette et precis
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
1 mars 2004 à 08:53
Bah de rien pour la reponse, j'essaie de faire de mon mieux...
Un forum comme celui la sert a ca...
Qd on debute en java, tout ne s'apprend pas dans les livres, meme si c'est une excellente base...
Le probleme souvent c'est qu'il n'aborde pas assez les notions de classes objets parente, derivation...etc...
Or c'est souvent ce que les gens ne pige pas au depart... qd on n'a jamais fait d'objet avant.... et ici c'etait le cas... revois un peu les notions de derivation et d'interface (implements et extends) et tu y verras plus clair....

Alors pour ta nouvelle question, si je comprend bien tu veux faire
try{
try{
commandes
}
catch(IOException e)
}
catch(FileNotFoundException f)

c'est ca?
en fait, je pense que ton compilo va accepte, mais c'est une erreur...
FileNotFoundException est une IOException, donc ca ne sert a rien..., tu catcheras une exception d'entree sortie avant le prenmier try catch, tu me suis?
Pourquoi veux tu mettre 2 try catch? La ou un seul suffirait!
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
1 mars 2004 à 09:32
:big) Neodante :big)

Normalement ton compilo te dira qu'il n'est pas reachable ... avec ce try catch ! Je me trompe ??? Tu aurait fait l'inverse (inversé les deux exception) cela n'aurait normalement pas lieu ...
@+

[Responsable www.neogamedev.com]
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
1 mars 2004 à 09:47
Vi, c vrai qu'il devrait te dire que le deuxieme n'est pas reacheable...
vi, normalement il doit te levr un secteur not reachable...
mais en plus, je viens de voir quetu as mis
(String)in.readObject();
cette commande doit etre mise dans un try catch ClassNotFoundException ...
L'ideal pour toi serait si ce que te renvoie les exception t'imoporte peux sauf a l'affichage, de faire
try{
commandes();
} catch( Exception e){
System.out.println(e);}

et voila...
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
2 mars 2004 à 20:15
si j'ai mis deux try catch c'est que le compilateur me l'as demande
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
2 mars 2004 à 20:25
mais merci encore pour vos reponse mais je recapitule :
1) mettre (String)in.readObject(); dans un bloc try catch avec ClassNotFoundException
2)enlever le filenotfoundexeption
merci encore :big)

et c vrai que dans les livre il n'y a pas tout mais sur les tuto sur internet il y a encore moins (j'ai attaque le c++ sur internet)
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
2 mars 2004 à 21:12
:big) Neodante :big)

Va voir sur www.eteks.com c'est le site d'un de mes profs (il cartonne !!) Java/C++ ...
@+

[Responsable www.neogamedev.com]
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
3 mars 2004 à 12:37
ok merci et en plus comme je m'interesse au c++ c'est parfait
0
Rejoignez-nous