tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
618
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    javad javad ist offline Mitglied
    Registriert seit
    May 2006
    Ort
    München
    Beiträge
    18
    Hallo,

    Frage 1: ich habe eine Anwendung, bei der eine JTable je nach SQL-Abfrage neu befüllt werden soll. Die Abfrage wird in ein Array gespeichert und die Kopfspalten auch. Die Abfragen und die Vebindung zur Datanbank (Access) funktionieren. Leider aktualisiert das JTable nicht, wenn ich es das 2 mal fülle. Wenn ich per JButton das Tablemodel nochmals feuere, aktualisiert es. Wenn ich dann aber in eine anderes Windows-Programm wechsle und wieder die Anwendung maximiere, sind wieder die erstmals angezeigten Daten da.
    Hab schon gegoogelt und hier etliche Artikel gelesen, aber es geht und geht nicht

    Frage 2: Ich möchte Abfrage und Table in 2 Dateien speichern. Wie kann ich dateiübergreifend (von Ma.java nach JTable.java) die Arrays übergeben oder Comboboxen neu befüllen. Der Aufruf "Klasse.Combo1.addItem("Wert")" funktioniert nicht.
    Bitte helft mir. Vielen Dank im Voraus.

    Code Ma.java:

    public class Ma extends JFrame{
    static Object data[][];
    static String[] columnNames;
    DefaultTableModel model;
    // Ma nach Alter editieren
    public static String getMaedit(int alter) {

    // Abfrage String - Wie alt? - Verbindung "conn" wurde in MainForm.java hergestellt
    strSQL = "select * From ma order by nname where alter = " + alter;
    try {
    stmt = MainForm.conn.createStatement();
    ResultSet rsma1 = stmt.executeQuery(strSQL);
    }
    catch (SQLException ex) {
    }
    String columnNames[] = { "Pers.-ID", "Name", "Vorname", "Urlaub",
    "Zugriff", "Status", "Login", "Passwort", "Kennzeichen",
    "Erster tag", "Löschen" };

    //Array erzeugen[Anzahl Zeilen][Anzahl Spalten]
    Object data[][] = new Object[recordsint][11];

    // Die Datensätze in Array speichern
    int rsma1count = 0;

    try {
    while (rsma1.next()) {
    data[rsma1count][0] = rsma1.getObject("maid");
    data[rsma1count][1] = rsma1.getString("nname");
    data[rsma1count][2] = rsma1.getString("vname");
    data[rsma1count][3] = rsma1.getString("uanspr");
    data[rsma1count][4] =rsma1.getStting("zugriff");
    data[rsma1count][5] =rsma1.getString("gesperrt")
    data[rsma1count][6] = rsma1.getString("login");
    data[rsma1count][7] = rsma1.getString("pwd");
    data[rsma1count][8] = rsma1.getString("kz");
    data[rsma1count][9] = rsma1.getString("erstertag");
    data[rsma1count][10] = "Löschen";

    rsma1count = rsma1count + 1;
    }
    rsma1.close();
    stmt.close();
    conn.close();
    }
    catch (SQLException ex1) {
    }
    //Arrays an Table Modell übergeben
    createTable(data, columnNames);
    }
    return "";
    }


    // Create table with data and columns
    public static String createTable(Object[][] data, String[] columnNames) {
    // create table model
    model = new DefaultTableModel();
    model.setDataVector(data, columnNames);
    model.fireTableDataChanged();
    model.fireTableStructureChanged();

    // give the model to the table
    JTable table = new JTable();
    table.setModel(model);

    JScrollPane scrollPane = new JScrollPane(table);
    getContentPane().add(scrollPane, BorderLayout.CENTER);
    scrollPane.setBounds(new Rectangle(5, 165, 988, 470));

    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    return "";
    }
    }
    Geändert von javad (02.06.06 um 15:54 Uhr)
     

  2. #2
    eusti eusti ist offline Mitglied
    Registriert seit
    Jun 2006
    Beiträge
    11
    Hallo javad!

    Vielleicht ist das die Lösung!

    Frage 1:
    private/public String [] columnNames = {"name1","Name2"....};

    public void createTable(Object/String [][] data) {
    model = new DefaultTableModel(); // oder eine Klasse von DefaultTableModel ableiten!
    table= new JTable(model);
    model.setDataVector(data, columnNames);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    scrollPane.setViewportView(table);
    model.fireTableDataChanged();
    }

    Und das ScrollPane nur einmal für das Programm im Konstruktor erzeugen und nicht bei jeder Aktualisierung aufs neue dem JFrame hinzufügen.
    Also bei mir funktioniert es so ganz gut.

    Frage 2:
    Wenn ich die Frage richtig verstanden habe, musst du in der Datei JTable.java(Ich nenne die Klasse/Datei mal MA2.java) eine public Methode erzeugen, die Daten empfangen und verarbeiten kann.
    d.h.
    MA2 empfaenger = new MA2();
    empfaenger.erhalteDatenVonMA(Array ,String etc.)

    Methode in MA2.java oder JTable.java:

    public void erhalteDatenVonMA(String b){
    ComboBox1.removeAllItems();
    ComboBox1.addItem(b);
    }

    Evtl. hilft dir das ja schon weiter!
     

Ähnliche Themen

  1. jTable färbt beim anklicken ganze Zeile an
    Von sunmania im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 12.11.10, 23:16
  2. Antworten: 2
    Letzter Beitrag: 23.04.09, 14:03
  3. Bitte um Hilfe mit JTable
    Von Meg2001 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 26.09.08, 03:55
  4. JTable und Zellenfarbe - Hilfe
    Von farmerlvr im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 20.07.08, 13:59
  5. JTable ListSelection Event nicht ausführen beim Reordering?
    Von Ryu20 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 17.03.08, 17:18