keine darstellung in JTable

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute,
habe das Problem das wenn ich ein Select befehl absetze auf die DB, bekomme ich so ca. 30 DS zurück.

Diese kann ich mir auch in der Kommandozeile ausgeben lassen.

Wenn ich die werte dann aber mit next in die Tabelle übertragen will, bleibt diese einfach leer!


Woran liegt das?
Ich weiß google und FAQ, hab in beides hineingeschaut, aber leider keine Lösung für mich!


Helft mir bitte :roll:


hier der Code

Code:
package pk.xxx.xxxxxxxxx; 

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.Vector;

import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class SuchePerson extends JFrame {

	private JPanel jContentPane = null;
	private JTextField tname = null;
	private JTextField truf = null;
	private JTextField tgeb_dat = null;
	private JLabel lname = null;
	private JLabel lruf = null;
	private JLabel lgeb_dat = null;
	private JButton bsuche = null;
	private JScrollPane sperg = null;
	private JTable terg = null;
	private JButton bloeschen = null;
	private AktionsAbhoerer listener = new AktionsAbhoerer();
	private JButton bverwerfen = null;

	public SuchePerson() {
		super();
		initialize();
		
	}
    Properties cfg = new Properties();

	private void initialize() {
		this.setContentPane(getJContentPane());
		this.setTitle("FSW / Person Suche Maske");
		this.setBounds(new java.awt.Rectangle(0,0,600,400));
	}

    class AktionsAbhoerer implements ActionListener 
    {
        public void actionPerformed(ActionEvent actionEvent) 
        {            
        	if (actionEvent.getActionCommand().equals("Verwerfen")) 
        	{
   		      	tname.setText("");
				truf.setText("");
				tgeb_dat.setText("");
				System.out.println("Eingaben verworfen!");
            }
        
        	if (actionEvent.getActionCommand().equals("Suche")) 
        	{  
        		try 
                {
                    cfg.load(new FileInputStream("config.cfg"));   
                    Connection dbc;
					try 
					{
						dbc = new DBConnect(cfg).openConnect();

						ResultSet rs = dbc.createStatement().executeQuery("SELECT * FROM person where name='Aalst'");            
						while (rs.next())
						{
							System.out.println("rs");
							addRow(terg, rs.getString("pers_nr"),rs.getString("name"));
						}        		
						rs.close();
						dbc.close();					
                    } 
					catch (SQLException e) 
					{
						e.printStackTrace();
					}
                } 
        		catch (IOException e)
                {
                    e.printStackTrace();
                }
        	}	
        }
    }
	
	public void addRow(JTable aList, String aVal1, String aVal2) {
		DefaultTableModel aModel = (DefaultTableModel) aList.getModel();
		Vector            aVect  = new Vector();
		
		aVect.addElement(aVal1);
		aVect.addElement(aVal2);
		
		aModel.addRow(aVect);
	}    
	
	public void addCol(JTable aList, String aCaption){
		DefaultTableModel aModel    = (DefaultTableModel) aList.getModel();
		//TableColumnModel  aColModel = jTable.getColumnModel();
		
		aModel.addColumn(aCaption);
	}
        
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lgeb_dat = new JLabel();
			lgeb_dat.setText("Geburtsdatum");
			lgeb_dat.setLocation(new java.awt.Point(20,100));
			lgeb_dat.setSize(new java.awt.Dimension(88,16));
			lruf = new JLabel();
			lruf.setText("Rufname");
			lruf.setLocation(new java.awt.Point(20,80));
			lruf.setSize(new java.awt.Dimension(54,16));
			lname = new JLabel();
			lname.setText("Name");
			lname.setLocation(new java.awt.Point(20,60));
			lname.setSize(new java.awt.Dimension(38,16));
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getTname(), null);
			jContentPane.add(getTruf(), null);
			jContentPane.add(getTgeb_dat(), null);
			jContentPane.add(lname, null);
			jContentPane.add(lruf, null);
			jContentPane.add(lgeb_dat, null);
			jContentPane.add(getBsuche(), null);
			jContentPane.add(getSperg(), null);
			jContentPane.add(getBloeschen(), null);
			jContentPane.add(getBverwerfen(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jname	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTname() {
		if (tname == null) {
			tname = new JTextField();
			tname.setSize(new java.awt.Dimension(150,20));
			tname.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 10));
			tname.setLocation(new java.awt.Point(120,56));
		}
		return tname;
	}

	/**
	 * This method initializes jruf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTruf() {
		if (truf == null) {
			truf = new JTextField();
			truf.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 10));
			truf.setBounds(new java.awt.Rectangle(120,77,150,20));
		}
		return truf;
	}

	/**
	 * This method initializes jgeb_dat	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTgeb_dat() {
		if (tgeb_dat == null) {
			tgeb_dat = new JTextField();
			tgeb_dat.setSize(new java.awt.Dimension(75,20));
			tgeb_dat.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 10));
			tgeb_dat.setColumns(0);
			tgeb_dat.setLocation(new java.awt.Point(120,98));
		}
		return tgeb_dat;
	}

	/**
	 * This method initializes bsuche	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBsuche() {
		if (bsuche == null) {
			bsuche = new JButton();
			bsuche.setLocation(new java.awt.Point(400,56));
			bsuche.setText("Suche");
			bsuche.setToolTipText("Suche nach Person");
			bsuche.setSize(new java.awt.Dimension(90,19));
			bsuche.addActionListener(listener);
		}
		return bsuche;
	}

	/**
	 * This method initializes sperg	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getSperg() {
		if (sperg == null) {
			sperg = new JScrollPane();
			sperg.setBounds(new java.awt.Rectangle(16,166,555,165));
			sperg.setViewportView(getTerg());
		}
		return sperg;
	}

	/**
	 * This method initializes terg	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getTerg() {
		if (terg == null) {
			terg = new JTable();
			terg.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
		}
		return terg;
	}

	/**
	 * This method initializes bloeschen	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBloeschen() {
		if (bloeschen == null) {
			bloeschen = new JButton();
			bloeschen.setSize(new java.awt.Dimension(90,19));
			bloeschen.setText("Löschen");
			bloeschen.setLocation(new java.awt.Point(480,340));
		}
		return bloeschen;
	}

	/**
	 * This method initializes bverwerfen	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBverwerfen() {
		if (bverwerfen == null) {
			bverwerfen = new JButton();
			bverwerfen.setBounds(new java.awt.Rectangle(400,77,90,19));
			bverwerfen.setText("Verwerfen");
			bverwerfen.setToolTipText("Alle Suchfelder leeren");
			bverwerfen.addActionListener(listener);
		}
		return bverwerfen;
	}
}
 
Code:
   private JTable getTerg() {
        if (terg == null) {
            terg = new JTable();
            terg.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
            terg.setModel(new javax.swing.table.DefaultTableModel(
                    new Object [][] {  },
                    new String [] {
                "A", "B"
            }
            ) {
                Class[] types = new Class [] {
                    java.lang.String.class, java.lang.String.class
                };
                boolean[] canEdit = new boolean [] {
                    false, false
                };
                
                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
                }
                
                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit [columnIndex];
                }
            });
        }
        return terg;
    }
 
und dafür postest du ein 262-Zeilen-Programm, dass nicht mal ausführbar ist (main-Operation fehlt)?
du baust GUI, SQL, ActionListner und was weiß ich nicht noch alles da rein ohne überhaupt grundlegend zu wissen wie man Daten in eine JTable einfügt?
da verzweifelt man ja manchmal.. 😉

mühsam habe ich mir nun selber ein 37 (!)-Zeilen-Programm gebastelt um dir das zu erläutern

Code:
package test;

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

public class SuchePerson extends JFrame {

	public SuchePerson() {
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);

		JTable t = new JTable();
		DefaultTableModel aModel = (DefaultTableModel) t.getModel();

		// aModel.setDataVector(new String[][] {{"a1","b1"}},new String[] {"a","b"});

		// aModel.addColumn("a");
		// aModel.addColumn("b");

		Vector aVect = new Vector();
		aVect.addElement("a2");
		aVect.addElement("b2");
		aModel.addRow(aVect);

		getContentPane().add(t, java.awt.BorderLayout.CENTER);
		setSize(new Dimension(300, 200));
		setVisible(true);
	}

	public static void main(String args[]) {
		new SuchePerson();
	}
}
also addRow funktioniert nicht wenn die Table leer ist, nicht einmal Spalten enthält,
so ist das eben, was kann man da groß zu sagen,

bevor du neue Zeilen einfügst musst du also erstmal die korrekte Spaltenanzahl setzen,
z.B. mit addColum, eine passende Operation dazu hast du ja auch in deinem Programm,

eine andere Möglichkeit wäre setDataVector, da kann man neben den Spalten gleich noch paar Zeilen miteinfügen

---------

wie man mit JTables arbeitet, wie man zumindest ein paar Daten reinkriegt und anzeigt,
dürfte in jedem Java-Buch drinstehen,
u.a. auch im Java-Tutorial von Sun:
http://java.sun.com/docs/books/tutorial/uiswing/index.html
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben