Avatar billede jakobbak Nybegynder
06. december 2003 - 15:14 Der er 3 kommentarer og
1 løsning

Få string fra table row!!

Jeg har et problem med at få en streng ud af en tabelrække. koden ser sådan ud:

table.setSelectionMod(ListSelectionModel.SINGLE_SELECTION);
                   
//Ask to be notified of selection changes.
ListSelectionModel rowSM = table.getSelectionModel();
                   
rowSM.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
      //Ignore extra messages.
      if (e.getValueIsAdjusting()) return;

ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                   
if (lsm.isSelectionEmpty()) {
    //no rows are selected
}
else {
    int selectedRow = lsm.getMaxSelectionIndex();
    System.out.println(selectedRow);
    //selectedRow is selected
    String[] selection = new String[10];                 
        for(int i = 0; i < 8; i++) {
        selection[i] = tableData[selectedRow][i];
        System.out.println(selection[i]);
}
}
}
});


Når jeg kører hele programmet får jeg ingen række skrevet ud første gang jeg vælger en række og 1 række bliver udskrevet næste gang jeg vælger en række og 2 rækker næste gang osv.
Desuden får jeg udskrevet 2 rækker hvis jeg først vælger 1 række og dernæst en anden række og så trykker på den knap der skal hente rækkeindholdet (selvom jeg bruger SINGLE.SELECTION).
Avatar billede _carsten Nybegynder
06. december 2003 - 15:19 #1
Brug:  int selectedRow = lsm.getSelectedRow();

returnerer -1 hvis der ikke er valgt en række
Avatar billede jakobbak Nybegynder
06. december 2003 - 17:44 #2
Jeg har prøvet det nu, men får : Cant resolve symbol - method getSelectedRow().

Jeg ved ikke om det har noget at gøre med sammenhængen jeg bruger metoden i???

Jeg har importeret javax.swing.*;
Avatar billede jakobbak Nybegynder
04. april 2004 - 13:59 #3
lukker!
Avatar billede _carsten Nybegynder
04. april 2004 - 14:15 #4
Det må undskylde, her har jeg vist helt klart sovet i timen - du skulle have spurgt om jeg var faldet i søvn eller havde opgivet.

Her er et løsningsforslag til hvordan du henter værdierne fra en tabelrække

import javax.swing.*;
public class JFrame_5 extends javax.swing.JFrame {
   
    public JFrame_5() {
        initComponents();
    }
   
    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();

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

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"a", "1", "A", "7"},
                {"b", "2", "B", "8"},
                {"c", "3", "C", "9"},
                {"d", "4", "D", "10"}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);

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

        jButton1.setText("Udskriv v\u00e6rdierne i en r\u00e6kke");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chooseRow(evt);
            }
        });

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

        pack();
    }

    private void chooseRow(java.awt.event.ActionEvent evt) {
        String s = JOptionPane.showInputDialog(this, "Skriv rækkenummeret");
       
        int row = Integer.parseInt(s);
       
        for(int i = 0; i < jTable1.getColumnCount(); i++)
            System.out.print(jTable1.getValueAt(row , i) + "  ");
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    } 

    public static void main(String args[]) {
        new JFrame_5().show();
    }

    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
}


PS. Jeg er vågen nu, hvis du har flere spørgsmål.
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