IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Problème avec des onglets


Sujet :

JavaFX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 67
    Points
    67
    Par défaut Problème avec des onglets
    Bonjour,

    J'ai trouvé un exemple pour intégrer un JTabbedPane, ici : http://jfx.wikia.com/wiki/SwingComponents
    Mais je n'arrive pas à faire communiquer mes deux classes.
    J'ai bien mis Main.fx et SwingTabbedPane dans le même projet et le même package, mais il y a une erreur quand Main.fx appelle la classe ("content: SwingTabbedPane{")
    "Cannot access SwingTabbedPane"

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 921
    Points
    22 921
    Billets dans le blog
    52
    Par défaut
    Verifie que le code source se nomme bien SwingTabbedPane.fx et que le package soit correctement specifie et rajoute public devant la declaration de la classe SwingTabbedPane (par defaut en FX tout est private) et rajoute aussi public pour SwingTab (je pense).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 67
    Points
    67
    Par défaut moins d'erreur mais il en reste une
    mettre "public" aux classes permet en effet qu'il trouve SwingTabbedPane (et c'est valable pour les autres exemples de la page...)

    Mais il reste une erreur dans Main :
    dans tabs: for(n in [1..5]) SwingTab{
    l'erreur est : cannot find symbole SwingTab
    la classe SwingTab est définie dans le même fichier SwingTabbedPane.fx (est-ce normal ? mais j'ai essayé de les séparer et là il trouve que SwingTab n'est pas à la bonne place)
    ou faut-il d'abord créer "tabs" avant Stage ? (comment ?)
    Bref j'ai du mal à comprendre comment s'imbriquent les classes.

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 921
    Points
    22 921
    Billets dans le blog
    52
    Par défaut
    A priori (j'ai encore un peu de mal avec la syntaxe) c'est une classe interne statique (ou plutot au niveau script puisque le mot statique est un peu banni de la syntaxe FX) de la classe SwingTabbedPane qui est la classe principale (puisque portant le meme nom que le fichier source). Et il te jette si tu mets public devant ?

    Si tu la deplaces dans son propre fichier source (SwingTab.fx), tu dois remplacer SwingTabbedPane.SwingTab par SwingTab dans le code.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 67
    Points
    67
    Par défaut ça marche !
    J'avais bien mis public. Je devais avoir fait une erreur en séparant les classes.
    Merci

    Voici le code corrigé pour ceux que cela intéresserait pour avoir des onglets :

    Main.fx :
    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
     
    package swingtabbedpane;
     
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.ext.swing.SwingLabel;
     
    Stage {
        title: "Tabbed Pane"
        scene: Scene {
            width: 300
            height: 150
            content: SwingTabbedPane{
                width: 300
                height: 150
     
                tabs: for(n in [1..5]) SwingTab{
                    title: "Tab: {n}"
                    content: SwingLabel{
                        text: "Label: "
                    }
                }
     
     
            }
        }
    }
    SwingTabbedPane.fx :
    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
    package swingtabbedpane;
     
    import javafx.ext.swing.*;
    import javax.swing.JComponent;
    import javax.swing.JTabbedPane;
     
    public class SwingTabbedPane extends SwingComponent{
        var tabbedPane: JTabbedPane;
        var updateComponentFlag: Boolean = false;
     
        public var selectedIndex: Integer = -1 on replace{
            if( not updateComponentFlag){
                if((-1 < selectedIndex) and ( selectedIndex  < tabbedPane.getTabCount() )){
                    tabbedPane.setSelectedIndex(selectedIndex);
                }
            }
        };
     
     
        public var tabs: SwingTab[] on replace oldValue[lo..hi] = newVals{
            for (tab in oldValue[lo..hi]){           tabbedPane.remove(tab.content.getJComponent().getParent());
            }
            for (tab in newVals){            tabbedPane.addTab(tab.title,tab.content.getJComponent());
            }
     
        };
     
        override function createJComponent(): JComponent {
            tabbedPane = new JTabbedPane();
     
            tabbedPane.addChangeListener(
                javax.swing.event.ChangeListener{
                    override function stateChanged(e: javax.swing.event.ChangeEvent){
                        updateComponentFlag = true;
                        selectedIndex = tabbedPane.getSelectedIndex();
                        updateComponentFlag = false;
                    }
                }
            );
            return tabbedPane;
        }
    }
    SwingTab.fx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package swingtabbedpane;
     
    import javafx.ext.swing.*;
    import javax.swing.JComponent;
    import javax.swing.JTabbedPane;
     
    public class SwingTab {
        public var title: String;
        public var content: SwingComponent;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec des onglets de la même vue
    Par Latmy dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 27/04/2007, 15h11
  2. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17
  3. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  4. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 13h49
  5. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo