Avatar billede fbisoft Nybegynder
17. november 2003 - 21:15 Der er 1 kommentar og
1 løsning

JTable værdier udskrives 2 gange

kør dette program og værdien udskrives 2 gange i stedet for 1 (som det er meningen!)
er der nogen der kan overskue det  .....

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class SelectTableExample extends JFrame {

    private    JPanel        topPanel;
    private    JTable        table;
    private    JScrollPane scrollPane;

    public SelectTableExample() {

        setTitle( "ListSelectionListener eksempel" );
        setSize( 300, 200 );
        setBackground( Color.gray );

        topPanel = new JPanel();
        topPanel.setLayout( new BorderLayout() );
        getContentPane().add( topPanel );

        String columnNames[] = { "Column 1", "Column 2", "Column 3" };

        String dataValues[][] =
        {
            { "12", "333", "1337" },
            { "4711", "42", "853" },
            { "93", "89.2", "109" },
            { "279", "9033", "3092" }
        };

        table = new JTable( dataValues, columnNames );

        // Dette er det essentielle:
        ListSelectionModel selectionModel = table.getSelectionModel();
        selectionModel.addListSelectionListener( new ListSelectionListener() {
            /* Metoden definerer hvad vi gør når tabellen vælges
            * du skal definere denne metode, da du implementerer ListSelectionListener
            */
           
            public void valueChanged( ListSelectionEvent event ) {
               
                if( event.getSource() == table.getSelectionModel() && event.getFirstIndex() >= 0 ) {
                    TableModel model = (TableModel)table.getModel();
   
                    // Hvad er der klikket på?
                    String string = (String)model.getValueAt(
                                            table.getSelectedRow(),
                                            table.getSelectedColumn() );
       
                    System.out.println( "Valgt: = " + string );
                }
            }
        });

        scrollPane = new JScrollPane( table );
        topPanel.add( scrollPane, BorderLayout.CENTER );
    }
}

class Test {

    public static void main( String args[] ) {
        SelectTableExample mainFrame    = new SelectTableExample();
        mainFrame.setVisible( true );
    }
}
Avatar billede conrad Nybegynder
17. november 2003 - 22:14 #1
prøv at lave et ekstra tjeck i din valueChanged:

if(!event.getValueIsAdjusting() )
                    {
                        TableModel model = (TableModel)table.getModel();
   
                    // Hvad er der klikket på?
                    String string = (String)model.getValueAt(
                                            table.getSelectedRow(),
                                            table.getSelectedColumn() );
       
                    System.out.println( "Valgt: = " + string );
                    }

Det virker hos mig
Avatar billede fbisoft Nybegynder
17. november 2003 - 23:13 #2
Tak Conrad....

jeg fandt følgende på nettet .....
if (e.getValueIsAdjusting()) return;
og det er det samme som dit forslag
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