Avatar billede mestersmo Nybegynder
10. juni 2003 - 18:24 Der er 9 kommentarer og
1 løsning

Ændring af indhold af JComboBoks

Jeg har en combo box indeholdende et String[] arr1.
Ved tryk på en knap skal indholdet skifte til et andet String[] arr2.
Kan det gøres uden at man først skal ”tømme” combo boxen, og derefter ligget String objekterne et af gangen?
Måske et dumt spørgsmål, men jeg kan ikke umiddelbart finde en metode der skifter hele indholdet

/S
Avatar billede arne_v Ekspert
10. juni 2003 - 18:43 #1
Hvad med setModel ?
Avatar billede mestersmo Nybegynder
10. juni 2003 - 18:55 #2
Har aldrig brugt det.
Har læst lidt om det her på siden.

Håbede bare på at der var en metode til det som jeg havde overset.

Sidder lige nu og roder med at smide de nye String objekter over i Combo Boxen
et af gangen ved hjælp af løkker.
Avatar billede mestersmo Nybegynder
10. juni 2003 - 18:55 #3
Hvordan virker setModel?
Avatar billede _carsten Nybegynder
10. juni 2003 - 18:59 #4
Brug: minJComboBox.setModel(new javax.swing.DefaultComboBoxModel( arr2 ));
Avatar billede arne_v Ekspert
10. juni 2003 - 18:59 #5
Hvis du har en Vector bør du kunne lave:

cmbx.setModel(new DefaultComboBoxModel(v));
Avatar billede arne_v Ekspert
10. juni 2003 - 19:00 #6
Eller med et array som Carsten foreslår.
Avatar billede mestersmo Nybegynder
10. juni 2003 - 19:17 #7
Hmmm. Tror måske alligevel at jeg gør et forsøg med løkker :)

minCB.removeAllItems();
for(int i = 0; i < arr2.length; i++)
  minCB.insertItemAt(arr2[i], i);

Bruger jeg ovenstående får jeg skiftet mine værdier ud,
men indeks vises ikke før man åbner combo boxen.
Den viste værdi er i stedet blank (grundet gemoveAllItems).
Kan jeg på en eller anden måde "opdatere" den så indeks 0 vises uden at man først skal åbne boxen?
Avatar billede _carsten Nybegynder
10. juni 2003 - 19:42 #8
Brug setModel, det er simpelt, enkelt og hurtigt!!

public class JComboTest extends javax.swing.JFrame {
   
    public JcomboTest() {
        initComponents();
    }
   
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jComboBox1 = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6" }));
        jPanel1.add(jComboBox1);

        jButton1.setText("Skift ComboBoxModel");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                if(jComboBox1.getSelectedItem().equals(("1")))
                    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "A", "B", "C", "D", "E", "F" }));
                else
                    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6" }));
                }
            });

        jPanel1.add(jButton1);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new JcomboTest().show();
    }
   
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JComboBox jComboBox1;
}
Avatar billede _carsten Nybegynder
10. juni 2003 - 19:52 #9
HOV: ret lige 'class JComboTest' til 'class JcomboTest'

ellers for du compiler problemer
Avatar billede mestersmo Nybegynder
10. juni 2003 - 19:56 #10
Er lidt i tidsnød (skulle være færdig i går:)
Så jeg bruger den løsning jeg har med løkker.
Håber jeg får lidt tid til at kigge på din løsning senere.

Tak for hjælpen.
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





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis