JTabbedPane



  • Hello,

    Ich habe mehrere JTabbedPane in einer Array erstellt

    nach eine aufruf eine methode , die die Nr des JTabbedPane bekommt soll die angeforderte JTabbedPane angezeigt. Aber leider tut es nicht
    es wird immer die Letzte JTabbelPane angezeigt

    public class Test ....
    {
    JCompoenet c;
    public Test()
    {
    ..
    TopicCreator t = new TopicCreator();
    c = t.displayTabbedPane(0); // here i want to view the first TabbedPane
    add(c, ...); // but i see alway the fourth TabbedPane

    }

    ..
    }

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

    public class TopicCreator
    {

    JTabbedPane []topics= new JTabbedPane[5];
    JPanel pTopics = new JPanel();

    public TopicCreator()
    {
    pTopics.setLayout(new BorderLayout());
    JPanel []p = new JPanel[25];
    int x = 0;
    for(int j = 0; j < topics.length; j++){
    topics[j] = new JTabbedPane();
    for(int i=0; i < 5; i++){


    topics[j].addTab("tab "+i, new JLabel("Test"));
    x++;
    }
    topics[j].setVisible(false);
    pTopics.add(topics[j],BorderLayout.CENTER);
    }
    }
    //------------------------------------------------------------
    public JComponent displayTabbedPane(int topicNr)
    {
    for(int i=0; i < topics.length; i++){
    if( i == topicNr){
    topics[i].setVisible(true);
    break;
    }else{
    topics[i].setVisible(false);
    }
    }
    return (JComponent)pTopics;
    }
    //-----------------------------------------------------------
    }

    danke



  • Du musst das break aus dem if entfernen, da sonst alle Panes nach der sichtbaren nicht mehr auf unsichtbar gesetzt werden. Die for Schleife wird beendet.

    IMHO ist es aber sinnvoller das if gleich durch Folgendes zu ersetzen:

    topics[i].setVisible( i == topicNr );
    

    HTH

    Bye, TGGC


Anmelden zum Antworten