Tu met setModal(true); dans ta classe NewGame, juste avant le setVisible(true); et tu enlèves ceux de la classe appelante.
Tu met setModal(true); dans ta classe NewGame, juste avant le setVisible(true); et tu enlèves ceux de la classe appelante.
ben j aimerais que lorsque j ouvre la fenetre NewGame on ne puisse pas acceder a l autre fenetre
Oui je vois, et bien fais ce que je t'ai dis ci-dessus , ca fonctionne tres bien.
quand je fais cela la fentre ne se ferme plus quand j appel disposer()Envoyé par BiMouXeTTe
Allez un petit exemple :
Main.java :
Fenetre.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Main { public static void main(String [] telsArgs) { new Fenetre(); }//main() }//class Wizard
Modale.java
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 import java.awt.event.*; import javax.swing.*; public class Fenetre extends JDialog { public Fenetre() { setTitle("Ma fenetre principale"); JPanel Pane = new JPanel(); getContentPane().add(Pane); JButton Ok = new JButton("Ok"); Ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { disposer(); } }); Pane.add(Ok); pack(); setVisible(true); new Modale(); } private void disposer() { dispose(); } }
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 import java.awt.event.*; import javax.swing.*; public class Modale extends JDialog { public Modale() { setTitle("Nouvelle partie"); JPanel Pane = new JPanel(); getContentPane().add(Pane); JButton Ok = new JButton("Ok"); getContentPane().add(Pane); Ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { disposer(); } }); Pane.add(Ok); pack(); setModal(true); setVisible(true); } private void disposer() { dispose(); } }
ma classe newGame
elle ne se ferme plus quand je mets setmodel(true);
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class NewGame extends JDialog{ int NbRadioButtons = 0; JRadioButton[] RadioButtons; ButtonGroup Group; JPanel Pane; JPanel PaneSouth; JButton Ok; JButton Quit; //JDialog Dialog; public NewGame(){ setTitle("Nouvelle partie"); //Dialog = this; setLocationRelativeTo(getParent()); setLayout(new BorderLayout()); Pane = new JPanel(); Pane.setLayout(new GridLayout(3, 3)); PaneSouth = new JPanel(); Ok = new JButton("Ok"); Quit = new JButton("Quitter"); NbRadioButtons = 3; RadioButtons = new JRadioButton[NbRadioButtons]; RadioButtons[0] = new JRadioButton("10 x 10"); RadioButtons[0].setActionCommand("10x10"); RadioButtons[0].setSelected(true); RadioButtons[1] = new JRadioButton("15 x 15"); RadioButtons[1].setActionCommand("15x15"); RadioButtons[2] = new JRadioButton("20 x 20"); RadioButtons[2].setActionCommand("20x20"); Group = new ButtonGroup(); for ( int i = 0 ; i < NbRadioButtons ; i++){ Group.add(RadioButtons[i]); Pane.add(RadioButtons[i]); } PaneSouth.add(Ok); PaneSouth.add(Quit); add("South", PaneSouth); add("Center", Pane); Ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String Rep = Group.getSelection().getActionCommand(); int NbBuisson = 5, NbMouton = 5; if (Rep == "10x10") MainFrame.NewGame (10, 10, NbBuisson, NbMouton); else if (Rep == "15x15") MainFrame.NewGame (15, 15, NbBuisson, NbMouton); else if (Rep == "20x20") MainFrame.NewGame (20, 20, NbBuisson, NbMouton); else MainFrame.NewGame (10, 10, NbBuisson, NbMouton); disposer(); } }); Quit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); pack(); //setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); //validate(); setResizable(false); setModal(true); setVisible(true); } private void disposer() { dispose(); } }
edit : l autre fenetre n est pas une JDialog mais une JFrame ... c important ?
Non ce n'est pas important, les deux fonctionnent. Fais voir la classe appelante please ?
voila
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 import java.awt.BorderLayout; import javax.swing.*; import java.awt.event.*; public class MainFrame extends JFrame{ private static MainFrame singleton = null; private final int TAILLE_IMG = 30; private Map GameMap; private int TailleX = 0, TailleY = 0; public MainFrame(int theTailleX, int theTailleY, int NbBuisson, int NbMoutons){ super("Kill Mouton"); singleton = this; createMenuBar(); TailleX = theTailleX; TailleY = theTailleY; setLayout(new BorderLayout()); GameMap = Map.getMap(TailleX, TailleY, NbBuisson, NbMoutons); add("Center", GameMap); pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); validate(); setVisible(true); setResizable(false); setLocationRelativeTo(getParent()); } public static void NewGame(int theTailleX, int theTailleY, int NbBuisson, int NbMoutons){ if(singleton == null) new MainFrame(theTailleX, theTailleY, NbBuisson, NbMoutons); else{ getMainFrame().TailleX = theTailleX; getMainFrame().TailleY = theTailleY; getMainFrame().getGameMap().Reset(theTailleX, theTailleY, NbBuisson, NbMoutons); } getMainFrame().setLocationRelativeTo(getMainFrame().getParent()); } public static MainFrame getMainFrame() { //if(singleton == null) // new MainFrame(10, 10); return singleton; } public int getTailleImg(){ return TAILLE_IMG; } public int getTailleX(){ return TailleX; } public int getTailleY(){ return TailleY; } public void setGameMap(Map theMap){ GameMap = theMap; } public Map getGameMap(){ return GameMap; } public class MenuListener implements ActionListener { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if (cmd == "Nouvelle partie") { System.out.println("Nouvelle partie..."); [size=18]new NewGame();[/size] //aNewGame.setModal(true); //aNewGame.setVisible(true); } else if (cmd == "Quitter") { System.exit(0); } getMainFrame().getGameMap().requestFocus(); getMainFrame().getGameMap().repaint(); } } public void createMenuBar() { JMenuBar menuBar = new JMenuBar(); this.setJMenuBar(menuBar); JMenu menu1 = new JMenu("Jeu"); menuBar.add(menu1); MenuListener mL = new MenuListener(); JMenuItem menuItem11 = new JMenuItem("Nouvelle partie"); menuItem11.addActionListener(mL); menu1.add(menuItem11); menu1.addSeparator(); JMenuItem menuItem12 = new JMenuItem("Quitter"); menuItem12.addActionListener(mL); menu1.add(menuItem12); } }
Quand on fait des singletons, le constructeur est private Déjà ça...
Met ça en commentaire : getMainFrame().getGameMap().requestFocus();
ah je savais pas merci ...mais tj le meme prob ...Envoyé par BiMouXeTTe
la fenetre newgame arrive ...je clic sur ok l autre fenetre s ouvre... mais la fenetre newgame est tj la ...il faut que je clic sur ok pour la ferme ...
Met un System.out.println("truc"); avant et après le dispose() dans la méthode disposer();, est-ce qu'il affiche les deux quand tu cliques sur le bouton ?
Essayes de cliquer une deuxième fois s'il affiche les deux. Qu'est ce qu'il affiche ?
il met truc pour les deux !
ouiEnvoyé par BiMouXeTTe
bizarre et tu met bien la méthode disposer dans la classe NewGame et non dans la classe anonyme ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager