riderfun
Messages postés98Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention11 janvier 2010
-
2 févr. 2009 à 17:19
amirkel -
12 août 2009 à 02:00
Bonjour, pour mes projets je souhaite créer une sorte de paint en java et la possibilité d'avoir plusieurs onglet separés.
J'arrive à créer les onglets mais je voudrais pouvoir traiter différement ces onglets comme la couleur de fond ect...
Voici mon code pour créer les onglets:
private JMenuItem getNewOnglet() {
if (NewOnglet == null) {
NewOnglet = new JMenuItem();
NewOnglet.setText("Nouvel onglet");
NewOnglet.setToolTipText("Ajouter un onglet");
NewOnglet.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,
KeyEvent.CTRL_DOWN_MASK));
NewOnglet.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
nbOnglet = nbOnglet + 1;
if (nbOnglet >= 10) {
JOptionPane.showMessageDialog(null,
"Vous ne pouvez dépasser 10 onglets!",
"Erreur", JOptionPane.WARNING_MESSAGE);
} else {
TabbedPane.insertTab("Panneau" + nbOnglet, null, null,
"Onglet", nbOnglet);
System.out.println("Nombre onglet: " + nbOnglet);
}
}
});
}
return NewOnglet;
}
et voici pour modifier la couleur de fond:
private JButton getBtnMulti() {
if (btnMulti == null) {
btnMulti = new JButton();
btnMulti.setIcon(new ImageIcon("images/multi.png"));
btnMulti.setToolTipText("Choix de la couleur");
btnMulti.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("####### Choix couleur #######");
Color coul = JColorChooser.showDialog(null,
"Couleur de fond", Color.WHITE);
System.out.println("Choix de la couleur " + coul);
Panel1.setBackground(coul);
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 15:05
Salut,
Je ne sais pas si cela vient de là, mais de toute manière il faudrait que tu aies à chaque fois une nouvelle instance de JPanel dans ton JTabbedPane.
Fait un test pour voir.
Dans le actionPerformed de ton JMenuItem newOnglet, remplaces :
getTabbedPane()
.addTab("Panneau" + nbOnglet, getPanel());
par
getTabbedPane()
.addTab("Panneau" + nbOnglet, new JPanel());
Juste histoire de voire que j'ai raison et que c'est parce que tu remets le même panel dans le nouvel onglet qu'il te le rajoute pas....
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 08:33
Salut,
Et qu'est ce qui ne marche? Message d'erreur?
Je ne sais pas vraiment comment on peut t'aider là... Fournit plus d'infos sur ton problème...
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
riderfun
Messages postés98Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention11 janvier 2010 3 févr. 2009 à 09:51
En fait, je n'ai pas d'erreur.
Mais je demande juste des conseils car je ne sais pas comment faire cela...
Car la création d'onglets, c'est ok mais je voudrais avoir un Panel indépendant pour chaque...Faut-il que je crée un JPanel à chaque création d'onglet?
et comment le rattacher à celui ci?
Cordialement.
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 10:31
Salut,
JTappedPane descend de Container.
Donc c'est tout bête, un JTabbedPane EST un Container donc il se comporte comme un JPanel.
Donc pour rajouter un JPanel au JTabbedPane, tu fais la même chose que lorsque tu rajoutes un composant à un JPanel.
A savoir add(....)
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Vous n’avez pas trouvé la réponse que vous recherchez ?
riderfun
Messages postés98Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention11 janvier 2010 3 févr. 2009 à 10:43
Alors dans mon code comment je peux récupérer le JTabbedPane actif pour y ajouter le Panel?
Voilà comment j'ai fait un ajouter un JTabbedPane:
TabbedPane.insertTab("Panneau" + nbOnglet, null, null,
"Onglet", nbOnglet);
Mais pour ajouter un Panel au panneau créé je ne sais pas comment récupérer celui-ci...
Merci de m'aider.
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 10:55
Salut,
Ben créé une nouvelle instance de ton JTabbedPane comme tu créés les instances de tes boutons etc...
public JTabbedPane getOnglets() {
if (tabbedPane == null) {
tabbedPane = new JTabbedPane(...);
...
}
return tabbedPane;
}
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
riderfun
Messages postés98Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention11 janvier 2010 3 févr. 2009 à 11:46
J'ai fait ça mais le problème c'est que je ne sais pas récupérer précisement l'onglet qui vient d'étre créé...
private JTabbedPane getTabbedPane() {
if (TabbedPane == null) {
TabbedPane = new JTabbedPane();
TabbedPane.addTab("Panneau 0", null, getPanel1(), null);
}
return TabbedPane;
}
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 11:46
Salut,
Il existe une méthode dans JTabbedPane :
addTab(String name, Component container);
Donc si tu veux rajouter un JPanel dans un nouvel onglet :
JPanel panneau = new JPanel();
... // rajout des composants dans le JPanel
tonOnglet.addTab("Nouvel Onglet", panneau);
et paf, c'est good
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 11:48
Salut,
J'avais pas vu ce que tu avais mis.
C'est niquel ce que tu as fait! Très bien.
Maintenant pour savoir quel onglet est sélectionné... Bon, je te le dis mais pense à regarder la Javadoc de la classe ok?
tonOnglet.getSelectedIndex()
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 11:54
Salut,
Ben t'as fait la méthode...
getTabbedPane().getSelectedIndex();
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 12:02
Salut,
Euh... ben oui, si tu veux la position de ton onglet... c'est un int oui...
Si tu veux, récupérer ton JTabbedPane --> getTabbedPane()
Et ensuite, c'est un objet JTabbedPane qui est retourné donc tu peux utiliser toutes les méthodes de cet objet, y compris getSelectedIndex()
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
riderfun
Messages postés98Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention11 janvier 2010 3 févr. 2009 à 13:47
Ok super j'ai compris le truc merci beaucoup pour ton aide!!
Je suis vraiment débutant et j'essaie de bien comprendre le principe...
ça fait plaisir d'avoir des personnes compétentes qui peuvent nous aider..
Bien cordialement.
riderfun
Messages postés98Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention11 janvier 2010 3 févr. 2009 à 14:04
Encore une petite question...je sais...
private JTabbedPane getTabbedPane() {
if (TabbedPane == null) {
TabbedPane = new JTabbedPane();
TabbedPane.addTab("Panneau 0", null, getPanel(), null);
}
return TabbedPane;
}
private JPanel getPanel() {
if (panneau == null) {
GridBagConstraints gridBagConstraints = new GridBagConstraints();
panneau = new JPanel();
panneau.setLayout(new GridBagLayout());
}
return panneau;
}
private JButton getBtnMulti() {
if (btnMulti == null) {
btnMulti = new JButton();
btnMulti.setIcon(new ImageIcon("images/multi.png"));
btnMulti.setToolTipText("Choix de la couleur");
btnMulti.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("####### Choix couleur #######");
Color coul = JColorChooser.showDialog(null,
"Couleur de fond", Color.WHITE);
System.out.println("Choix de la couleur " + coul);
getPanel().setBackground(coul);
}
});
}
return btnMulti;
}
private JMenuItem getNewOnglet() {
if (NewOnglet == null) {
NewOnglet = new JMenuItem();
NewOnglet.setText("Nouvel onglet");
NewOnglet.setToolTipText("Ajouter un onglet");
NewOnglet.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,
KeyEvent.CTRL_DOWN_MASK));
NewOnglet.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
nbOnglet = nbOnglet + 1;
if (nbOnglet >= 10) {
JOptionPane.showMessageDialog(null,
"Vous ne pouvez dépasser 10 onglets!",
"Erreur", JOptionPane.WARNING_MESSAGE);
} else {
getTabbedPane().addTab("Panneau" + nbOnglet, null,
getPanel(), null);
System.out.println("Nombre onglet: " + nbOnglet);
}
}
});
}
return NewOnglet;
}
Voici mes méthodes concernées, lorsque je crée un nouvel onglet ça me remplace le précédent...j'arrive cependant à changer la couleur de fond maintenant...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 févr. 2009 à 14:36
Salut,
Déjà dans ton cas, remplaces ta méthode
getTabbedPane().addTab("Panneau" + nbOnglet, null,
getPanel(), null);
par
getTabbedPane().addTab("Panneau" + nbOnglet, getPanel());
Ca revient au même.
Ensuite, qu'entends tu par remplacer le précédent? Ca t'écrase ton ancien onglet? Donc tu n'arrives pas à avoir 2 onglets en simultané?
Et pour conclure, je ne m'estime en aucun cas compétent. J'ai déjà eu à travailler avec des JTabbedPane mais bon je suis pas expert pour autant... Tu trouveras des personnes largement plus compétentes sur ce forum, comme Darksidious ou encore Twinuts.
Cependant, je peux toujours répondre à tes questions
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Peut-être cela t'aidera à comprendre mon projet d'étude.
Comme tu vas t'en douter, je souhaite créer une application de dessin toute simple ou on pourra faire plusieurs dessins sur différents onglets....