Daten aus Textfeldern an JTabel übergeben?

Hallo, habe ein Problem, komme einfach nicht weiter,.. und zwar hab ich ein AbstractTableModel.

Code:
class MyTableModel extends AbstractTableModel
     {
           public void setWert(String text, int x, int y)
           {
            data[x][y] =text;
           }

           private String[] columnNames = {"Vorname", "Nachname", "Alter", "Telefonnr", "Strasse", "Hausnnr", "PLZ", "Wohnort"};



          Object[][] data =
           {
//
//              {
//                vorname ,
//                name ,
//                geburtsjahr ,
//                telefonnr ,
//                strasse ,
//                hausnr ,
//                plz ,
//                wohnort
//              }
//
      };

         
        public int getColumnCount()
        {
            return columnNames.length;
        }

        public String getColumnName(int i)
        {
            return columnNames[i];
        }

        public int getRowCount()
        {
            return data.length;
        }

        public Object getValueAt(int row, int col)
        {
            return data[row][col];
        }

    }


und einen Button für übergeben:


Code:
if (button.equals("Übergeben"))
           {
              vorname = jtf_vorname.getText();
              name = jtf_name.getText();
              geburtsjahr = Integer.parseInt(jtf_geburtsjahr.getText());
              strasse = jtf_straße.getText();
              hausnr = Integer.parseInt(jtf_hausnr.getText());
              telefonnr = Integer.parseInt(jtf_telefonnr.getText());
              plz = Integer.parseInt(jtf_plz.getText());
              wohnort = jtf_wohnort.getText();

           }
Und zwar habe ich Textfelder, die beim Klick auf Übergeben in eine JTable rein sollen.
Wie man sieht hab ich das schon probiert, auf eine sehr komplizierte art und weise... hat jemand ein Tipp? Gruß Nadine
 
Hi...
hab da ein Lösung auf die schnelle.
Die Klasse AbstractTableModel besitzt eine Methode "setValueAt(Object arg0, int arg1, int arg2)"
Überschreib diese in der Klasse MyTableModel folgendermaßen:

@Override
public void setValueAt(Object arg0, int arg1, int arg2) {
data[arg1][arg2] = arg0;
super.setValueAt(arg0, arg1, arg2);
}

Dann kannst du, wenn beim Button eine Action durchgeführt wird diese ohne Probleme ausführen. Hab dir da zwei Klassen zusammengestellt. Diese Klassen wurden mit Eclipse 3.3.1 im Visual Editor erstellt

Code:
package de.tutorials.table;

import javax.swing.table.AbstractTableModel;

/**
 * 
 * @author Vinzenz Haas
 *
 */

public class MyTableModel extends AbstractTableModel {
	
	private Object[][] data = new Object[3][3];

	@Override
	public int getColumnCount() {
		return data.length;
	}

	@Override
	public int getRowCount() {
		return data.length;
	}

	@Override
	public Object getValueAt(int arg0, int arg1) {
		return data[arg0][arg1];
	}

	@Override
	public void setValueAt(Object arg0, int arg1, int arg2) {
		data[arg1][arg2] = arg0;
		super.setValueAt(arg0, arg1, arg2);
	}

}

Und die eigentlich Applikation

Code:
package de.tutorials.table;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.JTable;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JButton;

/**
 * 
 * @author Vinzenz Haas
 *
 */

public class TableTest {

	private JFrame jFrame = null;
	private JPanel jContentPane = null;
	private JTable jTable = null;
	private JPanel jPanel = null;
	private JButton jButton = null;

	private JFrame getJFrame() {
		if (jFrame == null) {
			jFrame = new JFrame();
			jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			jFrame.setSize(300, 200);
			jFrame.setContentPane(getJContentPane());
			jFrame.setTitle("Application");
		}
		return jFrame;
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJPanel(), BorderLayout.NORTH);
			jContentPane.add(getJButton(), BorderLayout.SOUTH);
		}
		return jContentPane;
	}

	private JTable getJTable() {
		if (jTable == null) {
			jTable = new JTable(new MyTableModel());
		}
		return jTable;
	}

	private JPanel getJPanel() {
		if (jPanel == null) {
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.fill = GridBagConstraints.BOTH;
			gridBagConstraints.weighty = 1.0;
			gridBagConstraints.weightx = 1.0;
			jPanel = new JPanel();
			jPanel.setLayout(new GridBagLayout());
			jPanel.add(getJTable(), gridBagConstraints);
		}
		return jPanel;
	}

	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()");
					jTable.setValueAt("blub", 1, 1);
					jTable.repaint();
				}
			});
			
		}
		return jButton;
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				TableTest application = new TableTest();
				application.getJFrame().setVisible(true);
			}
		});
	}

}


hth Vinz
 
Vielen Dank für die schnelle Anwort... habe auch noch eine andere lösung bekommen:


Code:
DefaultTableModel dtm_status;
   JTable     jt_status;


 //JTable

    String[][] rowData = {};

    String[] columnNames =  {
        "Vorname", "Name","Baujahr","Telefonnr","Strasse","Hausnr", "Plz", "Ort"
    };

    dtm_status = new DefaultTableModel(rowData, columnNames);
    jt_status = new JTable(dtm_status);
    jt_status.setAutoCreateRowSorter(true);
    jt_status.setPreferredScrollableViewportSize(new Dimension(450,100));

//Für übergeben in die Tabelle

Code:
if (button.equals("Übergeben"))
           {
              vorname = jtf_vorname.getText();
              name = jtf_name.getText();
              geburtsjahr = Integer.parseInt(jtf_geburtsjahr.getText());
              strasse = jtf_straße.getText();
              hausnr = Integer.parseInt(jtf_hausnr.getText());
              telefonnr = Integer.parseInt(jtf_telefonnr.getText());
              plz = Integer.parseInt(jtf_plz.getText());
              wohnort = jtf_wohnort.getText();


              status.add(vorname);
              status.add(name);
              status.add(geburtsjahr);
              status.add(strasse);
              status.add(hausnr);
              status.add(telefonnr);
              status.add(plz);
              status.add(wohnort);
              dtm_status.addRow(status);


               jtf_geburtsjahr.setText("");
               jtf_name.setText("");
               jtf_wohnort.setText("");
               jtf_telefonnr.setText("");
               jtf_vorname.setText("");
               jtf_plz.setText("");
               jtf_straße.setText("");
               jtf_hausnr.setText("");


           }
 

Neue Beiträge

Zurück