slt je dispose de 2 formulaires class A class B.sur A je dispose d'un button me permettant d’appelée B sans pour autant fermer A et j'aimerais pouvoir les contrôles depuis une unique classe: class C après réflexion j'ai définir dans la class C un constructeur pour chacun mais voilà une exception mes levé au lancement de A m'informant d'une anomalie dans sa structure,bref un truc de ce genre.
voici mon code:
Extrait de la Trace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 public class A extends javax.swing.JFrame { public A { forme(); } public void forme(){ C mess =new C(this); //lien de redirection vers le controleur contact.addActionListener(mess); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new A ().setVisible(true); } }); public javax.swing.JButton contact; } public class B extends javax.swing.JFrame { public B() { forme (); } public void forme () { C message =new C (this); //lien de redirection vers le controleur envoyer.addActionListener(message); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new B().setVisible(true); } }); } public javax.swing.JButton envoyer; } public class C implements ActionListener { private A mur=null; private B mess=null; public C(A mes){ mur=mes; mess=new B(); } public C(B messag){ mess=messag; mur=new A(); } public void actionPerformed(ActionEvent e) { Object ob=(Object)e.getSource(); if(ob.equals(mur.contact)){ System.out.println("lancement classe B"); mess.setVisible(true); } if(ob.equals(lemessage.envoyer)){ System.out.println("classe B lance avec succès"); } } }
Ainsi ma préoccupation est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:259) at sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:933) at javax.swing.JComponent.getFontMetrics(JComponent.java:1599) at javax.swing.text.PlainView.calculateLongestLine(PlainView.java:613) at javax.swing.text.PlainView.updateMetrics(PlainView.java:192) at javax.swing.text.PlainView.setSize(PlainView.java:464) at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1702) at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:905) at javax.swing.plaf.basic.BasicTextAreaUI.getPreferredSize(BasicTextAreaUI.java:103) at javax.swing.JComponent.getPreferredSize(JComponent.java:1634) at javax.swing.JTextArea.getPreferredSize(JTextArea.java:617) at javax.swing.text.JTextComponent.getPreferredScrollableViewportSize(JTextComponent.java:1959) at javax.swing.JTextArea.getPreferredScrollableViewportSize(JTextArea.java:694) at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:75) at javaapplication1.C.<init>(C.java:30) at javaapplication1.B.forme(B.java:30) at javaapplication1.B.<init>(B.java:26) at javaapplication1.C.<init>(C.java:26) at javaapplication1.A.forme(A.java:27) at javaapplication1.A.<init>(A.java:23) at javaapplication1.C.<init>(C.java:30) at javaapplication1.B.forme(B.java:30) at javaapplication1.B.<init>(B.java:26) at javaapplication1.C.<init>(C.java:26) at javaapplication1.A.forme(A.java:27) at javaapplication1.A.<init>(A.java:23) at javaapplication1.C.<init>(C.java:30) at javaapplication1.B.forme(B.java:30) at javaapplication1.B.<init>(B.java:26) at javaapplication1.C.<init>(C.java:26) at javaapplication1.A.forme(A.java:27) at javaapplication1.A.<init>(A.java:23) at javaapplication1.C.<init>(C.java:30) at javaapplication1.B.forme(B.java:30) at javaapplication1.C.<init>(C.java:26) at javaapplication1.C.<init>(C.java:26) at javaapplication1.A.forme(A.java:27) at javaapplication1.A.<init>(A.java:23) at javaapplication1.C.<init>(C.java:30) at javaapplication1.B.forme(B.java:30) at javaapplication1.B.<init>(B.java:26) at javaapplication1.C.<init>(C.java:26) at javaapplication1.A.forme(A.java:27) at javaapplication1.A.<init>(A.java:23) at javaapplication1.C.<init>(C.java:30) at javaapplication1.B.forme(B.java:30) at javaapplication1.B.<init>(B.java:26) at javaapplication1.C.<init>(C.java:26) at javaapplication1.A.forme(A.java:27) at javaapplication1.A.<init>(A.java:23) at javaapplication1.C.<init>(C.java:30)
1)Est ce un problème de compréhension,mon idée de base n'est telle pas correcte?
2) que faire?
3)toute aide,idée ou conseil serait la bienvenue.
a++






Répondre avec citation





Partager