Avatar billede backupmand Nybegynder
05. juni 2005 - 16:28 Der er 6 kommentarer

Indhold af Tabs forsvinder i JTabbedPane

Jeg tænker om det måske kan være en bug?

Jeg har et JTabbedPane med kun 1 tab til at starte med. Under runtime har jeg så tænkt mig at tilføje flere tabs, alt afhængig af, om der sker noget et andet sted i programmet. Jeg tilføjer flere tabs via addTab metoden og det ser således ud:

tabbedPane.addTab("nummer",null,(JPanel)tabs.get(tabs.size()-1),null);
Som man kan se er det et nyt JPanel jeg tilføjer til hvert tab,
men det der går galt er, at hvis jeg trykker tilbage på det foregående tab er der intet inhold i det. Kun på det nye tab. Hvad pokker kan det være?
Avatar billede backupmand Nybegynder
05. juni 2005 - 16:29 #1
"tabs" er en vector med JPanels, hvor jeg her (under runtime) fisker det senest tilføjede JPanel ud og lægger det på det næste tab.
Avatar billede _carsten Nybegynder
05. juni 2005 - 16:40 #2
Prøv med
tabbedPane.addT.........
tabbedPane.validate()
Avatar billede backupmand Nybegynder
06. juni 2005 - 16:03 #3
Virker desværre ikke...
Avatar billede _carsten Nybegynder
06. juni 2005 - 20:56 #4
Jeg forstår ikke problemet - det kører jo bare, endda uden validate!!

Se nedenstående eksempel

import javax.swing.JTabbedPane;

public class AddTabTest extends javax.swing.JFrame {

    public AddTabTest() {
        initComponents();
        setSize(500, 200);
    }
   
    private void initComponents() {
        tbPane = new javax.swing.JTabbedPane();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().add(tbPane, java.awt.BorderLayout.CENTER);

        jButton1.setText("Add new Tab");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addMyTab(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.NORTH);

        pack();
    }


    private void addMyTab(java.awt.event.ActionEvent evt) {
        tbPane.addTab("tab" + (tabCount += 1), new JTabbedPane());
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AddTabTest().setVisible(true);
            }
        });
    }
   
    private javax.swing.JButton jButton1;
    private javax.swing.JTabbedPane tbPane;

    private int tabCount;
}
Avatar billede backupmand Nybegynder
06. juni 2005 - 22:39 #5
Jeg kan se at din addTab metode ser således ud:
addTab("tab" + (tabCount += 1), new JTabbedPane());
Du tilføjer ikke rigtigt noget content under det nye tab. Der er tomt.
Prøv at lave et JPanel med en tilfældig JLabel på hver.
Min metode ser således ud:
tabbedPane.addTab("nummer",null,(JPanel)tabs.get(tabs.size()-1),null);
Jeg behøver ikke nogle argumenter der hvor der står null, egentlig. Mit tredje
argument hiver et JPanel ud fra en vector og placerer det under tabbet.
Jeg vil dog lige se om jeg kan bruge noget af det du skriver, men det
ser ikke ud til det. Umiddelbart.
Avatar billede backupmand Nybegynder
07. juni 2005 - 20:34 #6
Forklarer jeg det for dårligt?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester