Error: adding a window to a container

bouchti
Messages postés
4
Date d'inscription
vendredi 14 mars 2003
Statut
Membre
Dernière intervention
26 avril 2003
- 24 avril 2003 à 12:59
CoreBreaker
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
- 21 mai 2003 à 22:41
Bonjour
j'ai l'erreur "adding a window to a container"
lors de l'execution de non petit programme qui est le suivant

(si vous avez une solution n'hesiter de m'emvoyé la réponse le plus rapidement possible.Merci)

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

public class TabbedPaneDemo extends JFrame {
public TabbedPaneDemo() {
ImageIcon icon = new ImageIcon("middle.gif");
JTabbedPane tabbedPane = new JTabbedPane();

Component panel1 = makeTextPanel("Blah");
tabbedPane.addTab("One", icon, panel1, "Does nothing");
tabbedPane.setSelectedIndex(0);

Component panel2 = makeTextPanel("Blah blah");
tabbedPane.addTab("Two", icon, panel2, "Does twice as much nothing");

Component panel3 = makeTextPanel("Blah blah blah");
tabbedPane.addTab("Three", icon, panel3, "Still does nothing");

Component panel4 = makeTextPanel("Blah blah blah blah");
tabbedPane.addTab("Four", icon, panel4, "Does nothing at all");

JPanel tabpanel=new JPanel();
tabpanel.setLayout(new BoxLayout(tabpanel, BoxLayout.Y_AXIS));
tabpanel.add(tabbedPane);

JPanel buttonPane=new JPanel();
buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));

JButton okButton=new JButton("OK");
//okButton.setActionCommand("OK");
//okButton.addActionListener(this);
JButton cancelButton=new JButton("Cancel");
//cancelButton.setActionCommand("Cancel");
//cancelButton.addActionListener(this);
buttonPane.add(okButton);
buttonPane.add(cancelButton);
buttonPane.setAlignmentX(Component.CENTER_ALIGNMENT);

buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
buttonPane.add(Box.createHorizontalGlue());
buttonPane.add(okButton);
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPane.add(cancelButton);

Container contentPane = getContentPane();
contentPane.add(tabpanel, BorderLayout.CENTER);
contentPane.add(buttonPane, BorderLayout.SOUTH);
//pack();

}

protected Component makeTextPanel(String text) {
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.setLayout(new GridLayout(1, 1));
panel.add(filler);
return panel;
}

public static void main(String[] args) {
JFrame frame = new JFrame(";jkjhlkj");
TabbedPaneDemo a = new TabbedPaneDemo();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});

frame.getContentPane().add(new TabbedPaneDemo(),
BorderLayout.CENTER);

frame.setSize(400, 300);
//frame.setResizable(false);
frame.setVisible(true);
}
}
A voir également:

7 réponses

CoreBreaker
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
24 avril 2003 à 23:04
En principe l'erreur est accompagné du numéro de ligne où se trouve l'erreur.

Mais en général un Window représente une fenêtre or c'est vrai tu ne peut pas mettre une fenétre dans un conteneur (comme un JPanel) car c'est très bizarre de mettre une fenêtre à l'intérieur d'une autre (a ne pas confondre avec une application MDI, ca n'a rien à voir !)

Plutot qu'une instance de Window tu devrais mettre une instance de JPanel dans ton conteneur

Core Breaker :)
0
CoreBreaker
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
25 avril 2003 à 21:04
Correction:

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

public class TabbedPaneDemo extends JFrame {
public TabbedPaneDemo() {
  super(";jkjhlkj"); // Titre
  setDefaultCloseOperation(EXIT_ON_CLOSE); //Remplace l'utilisation du WindowAdapter dans la méthode main
  setSize(400, 300); // Remplace l'appel dans la methode main

ImageIcon icon =  new ImageIcon("middle.gif");
JTabbedPane tabbedPane = new JTabbedPane();

Component panel1 = makeTextPanel("Blah");
tabbedPane.addTab("One", icon, panel1, "Does nothing");
tabbedPane.setSelectedIndex(0);

Component panel2 = makeTextPanel("Blah blah");
tabbedPane.addTab("Two", icon, panel2, "Does twice as much nothing");

Component panel3 = makeTextPanel("Blah blah blah");
tabbedPane.addTab("Three", icon, panel3, "Still does nothing");

Component panel4 = makeTextPanel("Blah blah blah blah");
tabbedPane.addTab("Four", icon, panel4, "Does nothing at all");

JPanel tabpanel=new JPanel();
tabpanel.setLayout(new BoxLayout(tabpanel, BoxLayout.Y_AXIS));
tabpanel.add(tabbedPane);

JPanel buttonPane=new JPanel();
buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));

JButton okButton=new JButton("OK");
//okButton.setActionCommand("OK");
//okButton.addActionListener(this);
JButton cancelButton=new JButton("Cancel");
//cancelButton.setActionCommand("Cancel");
//cancelButton.addActionListener(this);
buttonPane.add(okButton);
buttonPane.add(cancelButton);
buttonPane.setAlignmentX(Component.CENTER_ALIGNMENT);

buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
buttonPane.add(Box.createHorizontalGlue());
buttonPane.add(okButton);
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPane.add(cancelButton);

Container contentPane = getContentPane();
contentPane.add(tabpanel, BorderLayout.CENTER);
contentPane.add(buttonPane, BorderLayout.SOUTH);
//pack();
show(); // Remplace de setVisible(true) dans la méthode main
}

protected Component makeTextPanel(String text) {
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.setLayout(new GridLayout(1, 1));
panel.add(filler);
return panel;
}

public static void main(String[] args) {
/*JFrame frame = new JFrame(";jkjhlkj");
TabbedPaneDemo a = new TabbedPaneDemo();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});

// Ici tu met une fenêtre dans un conteneur, et c'est interdit voire illogique
frame.getContentPane().add(new TabbedPaneDemo(),
BorderLayout.CENTER);*/

//frame.setSize(400, 300);
//frame.setResizable(false);
//frame.setVisible(true);
new TabbedPaneDemo();
}
}


Core Breaker :)
0
cs_azerty001
Messages postés
3
Date d'inscription
mardi 20 mai 2003
Statut
Membre
Dernière intervention
26 mai 2003

20 mai 2003 à 23:02
Bonjour,
comment faire alors, si on a besoin de creer plusieurs fenetres dans une meme fenetre ? j'ai besoin pour un jeu, de creer une fenetre par joueur (maxi 4), et je ne ne sais pas comment faire.

Merci par avance.
0
CoreBreaker
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
20 mai 2003 à 23:23
Tu ne peut pas avoir des instances d'une fenêtre dans une fenêtre. Aucun environnement au monde ne permet cela. Il faudrait sinon que ta fenêtre implémente un OS à l'interrieur. La société WMWare (http://www.vmware.com/) à implémenté cela mais ça reste très complexe et en plus je ne suis pas sûr que java puisse implémenter cela.

Core Breaker :)
0

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

Posez votre question
CoreBreaker
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
20 mai 2003 à 23:26
Sinon la solution est de faire des fenêtres distinctes mais je ne suis pas sûr que c'est ce que tu recherches

Core Breaker :)
0
cs_azerty001
Messages postés
3
Date d'inscription
mardi 20 mai 2003
Statut
Membre
Dernière intervention
26 mai 2003

21 mai 2003 à 09:16
Bonjour,
Merci pour tes réponses.
Est-il possible de créer des fenêtres en mettant les coordonnées où on veut qu'elles s'ouvrent (pare qu'elles s'ouvrent par défaut en haut à gauche)
A quoi sert la méthode SetBounds() ?

Merci.
0
CoreBreaker
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
21 mai 2003 à 22:41
Oui on peu mais je ne sais as comment faire et SetBound permet d'effectuer un clipping

Core Breaker :)
0