Avatar billede krestenbanke Nybegynder
27. april 2004 - 12:52 Der er 3 kommentarer og
1 løsning

get fra jTable

Hejsa.

Har siddet og nørklet med at lave en "get" på en jTable. Tabellen skal bruges til at indtaste oplysninger i, der derefter skal bruges videre i programmet og gemmes i en Vector.

Jeg har lavet en DefaultTableModel for at kunne bruge metoden getValueAt(int arg, int arg); på tabellen, men kan ikke hive indtastede tal ud af tabellen.

Har pastet koden ind nedenfor:

Håber i kan hjælpe!
--------------------

import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
/*
* JFrame.java
*
* Created on April 23, 2004, 10:22 AM
*/

/**
*
* @author  krestenbanke
*/
public class nyVareGui extends javax.swing.JFrame implements ActionListener {
   
    //    Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTable jTable1;
   
    private Vector columnNames = new Vector();
    private Vector tabelData = new Vector();
   
    private DefaultTableModel tabelModel;
    // End of variables declaration
   
    /** Creates new form JFrame */
    public nyVareGui() {

        columnNames.add("Vare Nr.");
        columnNames.add("Navn");
        columnNames.add("Str.");
        columnNames.add("Ind. pris");
        columnNames.add("Ud. pris");
        columnNames.add("Antal");
       
       
        tabelModel =  new DefaultTableModel(new Vector(), columnNames) {
            public int getColumnCount() { return 6; }
            public int getRowCount() { return 1;}
       
            //copy-paste fra API, her returneres (kolonne * raekke) som integer
            //public Object getValueAt(int row, int col) { return new Integer(row*col); }
       
        };
       
        tabelModel.setDataVector(tabelData, columnNames);
       
       
        jPanel1 = new javax.swing.JPanel();
        jTable1 = new javax.swing.JTable(tabelModel);
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        getContentPane().setLayout(null);
        getContentPane().add(jPanel1);
       
        setSize(700, 300);
       
        jPanel1.setBounds(20,20, 700, 300);
       
        getContentPane().add(jPanel1);

        setTitle("Opret ny vare");
       
       
   
        jTable1.setBounds(5, 80, 660, 40);
       
        JScrollPane scrollpane = new JScrollPane(jTable1);
        scrollpane.setBounds(5, 80, 660, 40);
       
            //naeste linie er umiddelbart overfloedig mht. (290, 90)
            jTable1.setPreferredScrollableViewportSize(new Dimension(660, 40));
       
        jPanel1.add(scrollpane);

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

   
       
        jButton1.setText("Opret");
        jPanel1.add(jButton1);
        jButton1.setBounds(490, 170, 75, 29);
        jButton1.addActionListener(this);

        jButton2.setText("Cancel");
        jPanel1.add(jButton2);
        jButton2.setBounds(400, 170, 75, 29);
        jButton2.addActionListener(this);
       
       
        show();

    }
   
 
    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == jButton1) {
            System.out.println( "Tryk paa Opret");

            Object detteTal = jTable1.getValueAt(1,1);
           
            String tal = (String)detteTal.toString();
           
            System.out.println( "1,4 "+tal);
        }
        if (e.getSource() == jButton2) {
            System.out.println( "Tryk paa Cancel");
        }

    }
     
   
}
Avatar billede _carsten Nybegynder
27. april 2004 - 13:09 #1
Sandsynligvis fordi din tabel kun har én række og de data du vil hente fra tabellen kommer fra række nr. 2 kolonne 2

Object detteTal = jTable1.getValueAt(1,1);

En tabels første række er har nr. 0, første kolonne har nr. 0

Prøv
Object detteTal = jTable1.getValueAt(0,0);
Avatar billede krestenbanke Nybegynder
27. april 2004 - 13:30 #2
ok, det er jo nok en del af fejlen!
Prøvede getValueAt(0,0);
Men nu får jeg en nullPointer, sikkert fordi der ikke bliver lagt noget i Vectoren?? Eller hvad?
Avatar billede _carsten Nybegynder
27. april 2004 - 13:32 #3
I øvrigt

Hvis du initierer din DefaultTableModel med dine tabelData og columnNames, behøver du ikke bruge setDataVector på din tabelModel bagefter - det lidt dobbeltkonfekt.

tabelModel =  new DefaultTableModel(tabelData, columnNames) {

"nullPointer" - ja

Ret din public void actionPerformed(ActionEvent e) {

Til

            Object detteTal = jTable1.getValueAt(0,1);
           
            if(detteTal == null)
                System.out.println("Feltet indeholdt ingen værdi !");
            else
                System.out.println("0,1 " + detteTal.toString());
Avatar billede krestenbanke Nybegynder
27. april 2004 - 13:45 #4
Kanon!

Tusind 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