Avatar billede jesperthomsen1980 Nybegynder
16. december 2002 - 19:47 Der er 2 kommentarer og
1 løsning

Hvordan får jeg data ud af en JTable

Hej med jer!

Har fundet et eksempel på hvad jeg gerne vil lave. Dog er der det problem, at i stedet for at udskrive hvilken "row" der er valgt, vil jeg gerne have indholdet af den valgte "row" udskrevet!

Hvordan kan dette problem løses

På forhånd tak

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;

public class SimpleTableSelectionDemo extends JFrame {
    private boolean DEBUG = false;
    private boolean ALLOW_ROW_SELECTION = true;

    public SimpleTableSelectionDemo() {
        super("SimpleTableSelectionDemo");

        Object[][] data = {
            {"Mary", "Campione",
            "Snowboarding", new Integer(5), new Boolean(false)},
            {"Alison", "Huml",
            "Rowing", new Integer(3), new Boolean(true)},
            {"Kathy", "Walrath",
            "Chasing toddlers", new Integer(2), new Boolean(false)},
            {"Sharon", "Zakhour",
            "Speed reading", new Integer(20), new Boolean(true)},
            {"Angela", "Lih",
            "Teaching high school", new Integer(4), new Boolean(false)}
        };

        String[] columnNames = {"First Name",
                                "Last Name",
                                "Sport",
                                "# of Years",
                                "Vegetarian"};

        final JTable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));

        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
       
        if (ALLOW_ROW_SELECTION) { // true by default
            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()) {
                        System.out.println("No rows are selected.");
                    } else {
                        int selectedRow = lsm.getMinSelectionIndex();
                        System.out.println("Row " + selectedRow
                                          + " is now selected.");
                   
                    }
                }
            });
        }
        else
        {
          table.setRowSelectionAllowed(false);
        }
       
       
        if (DEBUG) {
            table.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    printDebugData(table);
                }
            });
        }

        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);

        //Add the scroll pane to this window.
        getContentPane().add(scrollPane, BorderLayout.CENTER);

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    private void printDebugData(JTable table) {
      int numRows = table.getRowCount();
      int numCols = table.getColumnCount();
        javax.swing.table.TableModel model = table.getModel();
        System.out.println("Value of data: ");
        for (int i=0; i < numRows; i++) {
          System.out.print("    row " + i + ":");
            for (int j=0; j < numCols; j++) {
                System.out.print("  " + model.getValueAt(i, j));
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }

    public static void main(String[] args) {
        SimpleTableSelectionDemo frame = new SimpleTableSelectionDemo();
        frame.pack();
        frame.setVisible(true);
    }
}
Avatar billede arne_v Ekspert
16. december 2002 - 20:09 #1
Noget i stil med:

package test;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;

public class SimpleTableSelectionDemo extends JFrame {
    private boolean DEBUG = false;
    private boolean ALLOW_ROW_SELECTION = true;

    private    Object[][] data = {
            {"Mary", "Campione",
            "Snowboarding", new Integer(5), new Boolean(false)},
            {"Alison", "Huml",
            "Rowing", new Integer(3), new Boolean(true)},
            {"Kathy", "Walrath",
            "Chasing toddlers", new Integer(2), new Boolean(false)},
            {"Sharon", "Zakhour",
            "Speed reading", new Integer(20), new Boolean(true)},
            {"Angela", "Lih",
            "Teaching high school", new Integer(4), new Boolean(false)}
        };

    public SimpleTableSelectionDemo() {
        super("SimpleTableSelectionDemo");


        String[] columnNames = {"First Name",
                                "Last Name",
                                "Sport",
                                "# of Years",
                                "Vegetarian"};

        final JTable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));

        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
        if (ALLOW_ROW_SELECTION) { // true by default
            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()) {
                        System.out.println("No rows are selected.");
                    } else {
                        int selectedRow = lsm.getMinSelectionIndex();
                        System.out.println("Row " + data[selectedRow][0]
                                          + " is now selected.");
                 
                    }
                }
            });
        }
        else
        {
          table.setRowSelectionAllowed(false);
        }
     
     
        if (DEBUG) {
            table.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    printDebugData(table);
                }
            });
        }

        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);

        //Add the scroll pane to this window.
        getContentPane().add(scrollPane, BorderLayout.CENTER);

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    private void printDebugData(JTable table) {
      int numRows = table.getRowCount();
      int numCols = table.getColumnCount();
        javax.swing.table.TableModel model = table.getModel();
        System.out.println("Value of data: ");
        for (int i=0; i < numRows; i++) {
          System.out.print("    row " + i + ":");
            for (int j=0; j < numCols; j++) {
                System.out.print("  " + model.getValueAt(i, j));
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }

    public static void main(String[] args) {
        SimpleTableSelectionDemo frame = new SimpleTableSelectionDemo();
        frame.pack();
        frame.setVisible(true);
    }
}
Avatar billede arne_v Ekspert
16. december 2002 - 20:11 #2
Præcis hvordan det skal laves vil afhænge af, hvordan du
skal bruge data.

Men princippet er ihvertfald at du bruger det selectede
index som index i det array du lavet tabelen med.
Avatar billede jesperthomsen1980 Nybegynder
16. december 2002 - 20:15 #3
fjong

takker arne v!
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