1

Voilà, on m a donner un projet de java a faire... (à croire que dans cette boite ils me donnent que des choses que j aime pas lol).
Bon j'ai un probleme, je suis oblige de travailler avec une version obsolete de java ((C) 2000 KK).
Je voulais savoir si vous connaissiez une base de donnée qui me permet de savoir si tel ou tel composant swing est disponible dans telle version etc...
Merci

2

http://java.sun.com/j2se/1.5.0/docs/api/
Dans les méthodes ou classes concernées, tu as le tag "Since".
Ou alors tu récupères l'api de la version que tu utilises.
Cinq font un et un font cinq : le tout est UNITE.
C'est dans l'incompréhension que je suscite que je trouve ma raison d'être.
Je suis moi, et je le suis parce que les autres ne le sont pas, et que ce sont eux qui forment ma personne.
Inconscience et déraison sont source d'imagination.
Au delà de ma conscience et de mon inconscient, mes rêves créent la réalité.

3

ok merci

4

Bon je profite de ce thread pour poser une autre question.
J ai besoin de faire une table avec un champ de radio par ligne.
J ai trouve un exemple:
http://www.java2s.com/ExampleCode/Swing-Components/RadioButtonTableExample2.htm
Cet exemple fait ce que j ai besoin de faire, en revanche il y a un petit bug (venant de ma VM je ne sais pas...).
En effet quand on change la selection d un radio il y a un probleme de refresh (en gros ca deselectionne l autre radio, mais ca redessine pas le radio selectionné).
J ai donc tenté un this.repaint() dans la methode setSelectedIndex, mais sans aucun succes.

Qqn peut il m aider?

5

Hum, j'ai la flemme d'éplucher tout le code.
Tu peux réduire le pb à un testcase bcp plus simple ?
Genre juste une fenêtre avec deux boutons radio.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

6

Par exemple :
import javax.swing.*;

public class Test extends JFrame
{
  public Test()
  {
    SetDefaultCloseOperation(EXIT_ON_CLOSE);

    JRadioButton b1 = new JRadioButton("Bouton 1");
    JRadioButton b2 = new JRadioButton("Bouton 2");

    add(b1,BorderLayout.NORTH);
    add(b2,BorderLayout.SOUTH);

    BoutonGroup group = new BoutonGroup();
    group.add(b1);
    group.add(b2);

    pack();
    setVisible(true);
  }

  public static void main(String[] args)
  {
    Test test = new Test();
  }
}
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

7

Oula t on exemple est loin de compiler :/
Bon en gros je pense que le probleme vient du fait que les radios soient dans la JTable. En gros les radios ont les bonnes valeurs, mais ils sont refresh qu au deuxieme click sur le meme item:/

8

Boh, qu'est-ce qui ne va pas dans mon exemple ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

9

Il compile pas du tout :/
Bon j'ai décidé de commencer form scratch... comme cela je reposerai mon problème avec plus de précision.

10

Oui, bah c'est quoi les erreurs de compilation ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

11

sabatier: more Test.java 
import javax.swing.*; 
 
public class Test extends JFrame 
{ 
  public Test() 
  { 
    SetDefaultCloseOperation(EXIT_ON_CLOSE); 
 
    JRadioButton b1 = new JRadioButton("Bouton 1"); 
    JRadioButton b2 = new JRadioButton("Bouton 2"); 
 
    add(b1,BorderLayout.NORTH); 
    add(b2,BorderLayout.SOUTH); 
 
    BoutonGroup group = new BoutonGroup(); 
    group.add(b1); 
    group.add(b2); 
 
    pack(); 
    setVisible(true); 
  } 
 
  public static void main(String[] args) 
  { 
    Test test = new Test(); 
  } 
}
sabatier: ls
%backup%~                         jdk-1_5_0_06-solaris-sparc.sh*
Desktop/                          jdk-1_5_0_06-solaris-sparcv9.sh*
Test.java                         released/
init_java                         ssc/
java_project/                     xx/
sabatier: javac Test.java 
Test.java:7: Undefined variable: EXIT_ON_CLOSE
    SetDefaultCloseOperation(EXIT_ON_CLOSE); 
                             ^
Test.java:12: Undefined variable or class name: BorderLayout
    add(b1,BorderLayout.NORTH); 
           ^
Test.java:13: Undefined variable or class name: BorderLayout
    add(b2,BorderLayout.SOUTH); 
           ^
Test.java:15: Class BoutonGroup not found.
    BoutonGroup group = new BoutonGroup(); 
    ^
Test.java:15: Class BoutonGroup not found.
    BoutonGroup group = new BoutonGroup(); 
                            ^
5 errors
sabatier: 

12

import java.awt.BorderLayout;

ButtonGroup et non BoutonGroup ! cheeky

et setDefaultCloseOperation : les noms de fonction commencent en général toujours par une minuscule

13

Mouarf, c'était tout con à corriger quand même hehe
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

14

JackosKing : passe par un IDE du genre Eclipse ou NetBeans, les corrections pour ces erreurs, ils te les fournissent tous seuls.

15

Le probleme c est que je ne suis pas sur mon ordinateur (j ai pas la chance d avoir tous les droits sur le cluster de sparc64bits:/). Sinon pour les erreurs j admet que j ai pas cherché:P La je bloque sur la création dynamique de la table (ie on ajoute les colones dynamiquement... ce qui est loin d etre facile je trouve pour un language de haut niveau...:/)

Sinon pour mon niveau en Java: archi debutant lol, mais j ai pas le temps malheuresement de l apprendre puisque ce n est qu une petite mission urgente alors que mon boulot et plutot de la dev sur tricor...smile

16

Heu je reve ou pour avoir une table qui trie selon le header selectionné il faut le coder soit même!!!!
C est vraiment du bidouillage swing comme api... :/

17

Ben comme les tables peuvent contenir n'importe quel type de données, tu dois implémenter une fonction compare j'imagine.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

18

ha la limite surcharger une methode pour la comparaison Ok, mais la sur l exemple du site de sun, c est 7 pages de code...

Bon maintenant j arrive a afficher mon RadionPanel dans ma table, mais je ne peux pas l editer :/ Va falloir que je regarde CellEditor :/

19

Bon j ai trouve la solution pour les raido buttons dans une JTable. Il suffit d avoir une instance de radiopanel par ligne wink

20

Erf an other problem...

import java.util.*;

class TestFilterTree 
{  
	public static void main(String args[]) throws Exception
	{
		final String[] pDatas = {	"home/sabatier",
                  			"home/sabatier/Desktop",
												"home/sabatier/Desktop/Trash",
												"home/sabatier/java_project",
												"home/sabatier/java_project/BTree",
												"home/sabatier/java_project/GUI",
												"home/sabatier/java_project/GUI/Button",
												"home/sabatier/xx/synthdrivers/YamahaUB99/format/CVS"};
		FilterTree pFilterTree = new FilterTree();
		pFilterTree.showModalTreeFilter(pDatas);
		System.out.println("OUT");
	}
}

j'ai le out qui est affiche en meme temps que la fenetre alors qu il devrait attendre que je ferme la fenetre non?
Comment fait on pour afficher une fenetre et attendre qu on la ferme?

21

Bah c'est quoi le code de la fonction showModalTreeFilter ? Elle vient d'où, ta classe FilterTree ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

22

Hola j ai fait mon boulet la... je poste le bon code demain dsl :/

23

Bon alors voila les sources: import java.util.*; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class FilterTree {      private static void createAndShowGUI(String[] pDatas) {                                 JFrame.setDefaultLookAndFeelDecorated(true);                String[] buttonLabel = {"Ok", "Cancel"};                     ButtonPanel buttons = new ButtonPanel(buttonLabel);                final Tree tree = new Tree(pDatas);                JPanel panel = new JPanel(new BorderLayout());                panel.add(tree, BorderLayout.NORTH);                buttons.setPreferredSize(new Dimension(480, 60));                panel.add(buttons, BorderLayout.SOUTH);                final JFrame frame = new JFrame("Tree Filter");                frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);       frame.getContentPane().add(panel, BorderLayout.CENTER);                buttons.setButtonActionListener(0,new ActionListener() {                                                                                                                                                            public void actionPerformed(ActionEvent e)                                                                                                                                                            {                                                                                                                                                                 String[] pPath = tree.getTreeSelection();                                                                                                                                                                 if(pPath != null)                                                                                                                                                                      for(int i=0;i< pPath.length; i++)                                                                                                                                                                           System.out.println(pPath[i]);                                                                                                                                                                 frame.setVisible(false);                                                                                                                                                            }                                                                                                                                                            });                buttons.setButtonActionListener(1,new ActionListener() {                                                                                                                                                            public void actionPerformed(ActionEvent e)                                                                                                                                                            {                                                                                                                                                                 frame.setVisible(false);                                                                                                                                                            }                                                                                                                                                            });          frame.pack();                frame.setVisible(true);      }            public  void showModalTreeFilter(final String[] pDatas) throws Exception {                javax.swing.SwingUtilities.invokeAndWait(new Runnable() {                          public void run() {                                         createAndShowGUI(pDatas);                          }                });      } } import java.util.*; class TestFilterTree  {        public static void main(String args[]) throws Exception      {           final String[] pDatas = {     "home/sabatier",                                  "home/sabatier/Desktop",                                                             "home/sabatier/Desktop/Trash",                                                             "home/sabatier/java_project",                                                             "home/sabatier/java_project/BTree",                                                             "home/sabatier/java_project/GUI",                                                             "home/sabatier/java_project/GUI/Button",                                                             "home/sabatier/xx/synthdrivers/YamahaUB99/format/CVS"};           FilterTree pFilterTree = new FilterTree();           pFilterTree.showModalTreeFilter(pDatas);           System.out.println("OUT");      } } ///////////////////////////////////////////////////////////////////////////////////////////////////////// // // File name: Tree.java //  // Infos: Implement a JTree component with a loader  //        Input format:   String[] pDatas = { "p1/p2/p3", "p1/p4/p5"...}; // // (C) Infineon 2006 // ///////////////////////////////////////////////////////////////////////////////////////////////////////// import java.util.*; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeSelectionModel; import javax.swing.tree.TreePath; public class Tree extends JPanel {      DefaultMutableTreeNode pTreeRoot = null;      JTree pTree = null;            private void loadDatas(String[] pDatas)      {           pTreeRoot = new DefaultMutableTreeNode("all");            for(int i=0; i<pDatas.length; i++)                addNode(pDatas[i]);      }   private DefaultMutableTreeNode     isNodeChild(String pNodeName, DefaultMutableTreeNode pParentNode)      {           for(int i=0; i<pParentNode.getChildCount();i++)                if(((String)((DefaultMutableTreeNode)pParentNode.getChildAt(i)).getUserObject()).compareTo(pNodeName) == 0)                     return (DefaultMutableTreeNode)pParentNode.getChildAt(i);           return null;      }      private void addNode(String pNodePath)      {           DefaultMutableTreeNode pTmpNode;           DefaultMutableTreeNode pParentNode = pTreeRoot;           String[] pPath = pNodePath.split("/");           for(int i=0; i<pPath.length; i++)           {                pTmpNode = isNodeChild(pPath[i], pParentNode);                if(pTmpNode != null)                     pParentNode = pTmpNode;                else                {                     pTmpNode = new DefaultMutableTreeNode(pPath[i]);                     pParentNode.add(pTmpNode);                     pParentNode = pTmpNode;                }           }      }      private String convertPathToString(TreePath pTreePath)      {           String pReturn = new String();           for(int i=1; i<pTreePath.getPathCount(); i++)                pReturn = pReturn + pTreePath.getPathComponent(i).toString()+"/";           if(pTreePath.getPathCount()>1)                pReturn = pReturn.substring(0,pReturn.length()-1);           return pReturn;      }      public String[] getTreeSelection()      {           TreePath[] pTreePaths = pTree.getSelectionPaths();           if(pTreePaths == null)                return null;           String[] pReturn = new String[pTreePaths.length];           for(int i=0; i<pTreePaths.length; i++)                pReturn[i] = convertPathToString(pTreePaths[i]);                      return pReturn;      }            public Tree(String[] pDatas) {           super(new GridLayout(1,0));           loadDatas(pDatas);           pTree = new JTree(pTreeRoot);           pTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);           JScrollPane pScrollPane = new JScrollPane(pTree);           //pScrollPane.setPreferredSize(new Dimension(500, 300));           add(pScrollPane);      } }

Le plus important doit etre il me semble dans la premiere source:
			javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
					public void run() {	
							createAndShowGUI(pDatas);
					}
			});

24

Non, bah c'est normal que ta fenêtre ne bloque pas l'affichage des messages dans la console.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

25

comment faire pour faire pour créer une fenêtre, et que l'execution de cette méthode soit interrompue jusqu'à ce que l'on ferme la fenêtre?
il faut utiliser une sémaphore? Ca me semble un peu enorme comme moyen pour du java qui est sencé être symple :/

26

Tu peux essayer avec un JDialog (en utilisant setModal).
Mais en fait l'API n'est pas vraiment faite pour utiliser la console ET un GUI.
Par contre, dans une application graphique, c'est très simple d'afficher une fenêtre modale.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

27

Parce que la en fait j ai 2 fenetres, l une principale et l autre qui apparait de temps en temps mais de maniere Modal... Bon je vais chercher un peu.
merci

28

Ah ben dans ce cas, c'est très simple, ça correspond à ce que j'ai mis plus haut.
La première fenêtre, tu en fais une JFrame, et la seconde, qui apparaît de manière modale, c'est un JDialog (tu utilises le constructeur prenant en paramètre une Frame et un booléen).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

29

Mais dans tes sources, ça ne correspond pas à ce que tu dis en ./27
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

30

En fait c'etait un test, bon je vais voir ca.
merci