Swing Eine andere Klasse über Button starten und in TextArea ausgeben

  • Themenstarter Themenstarter Marius83
  • Beginndatum Beginndatum
M

Marius83

Gast
Hallo zusammen.
Habe da eine Klasse die eine Access DB ausliest und eine Klasse für die GUI in der ich über einen Butten die Klasse der DB starten und in der TextArea ausgeben möchte.
Jetzt würde ich gerne wissen wie ich die Daten in die Klasse der GUI bekomme.
Habe da an Klasse1 test = new Klasse1(); gedacht aber danach weiß ich leider nicht weiter 🙁
Kann mir da jemand helfen?

Hier mal der Programmcode der beiden Klassen:

Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.ActionListener;
import java.sql.*;

import java.lang.Throwable ;
import java.io.*;
  /**
   * @author M.Jäger
   *
   */
  public class MSAccessExample extends JFrame   {


        public static void main(String[] args) throws Exception {

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        System.out.println("Treiber erfolgreich geladen");

        Connection con = DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=E:/tutorial/javadb.mdb");
        Statement stmt = con.createStatement();

         String updateString = "UPDATE Personal SET Vorname = 'Hans' WHERE Vorname LIKE 'mann'";
         stmt.executeUpdate(updateString);

        ResultSet rs = stmt.executeQuery("SELECT *from Personal");
        ResultSetMetaData rsmd = rs.getMetaData();
        int clmCnt = rsmd.getColumnCount();






        while (rs.next()) {
           for (int i = 1; i <= clmCnt; i++) {
                System.out.print(rs.getString(i));
                //System.out.print();


            }
            System.out.println();

        }
        rs.close();
        stmt.close();
        con.close();
        


    }
  }

Hier dann mal die 2 Klasse der GUI


Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.ActionListener;
import java.sql.*;

import java.lang.Throwable ;
import java.io.*;
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 17.03.2011
  * @author
  */

public class MsAccessFrame extends JFrame   {


  // Anfang Attribute
  private String[] MitarbeiterData = {};
  private JComboBox Mitarbeiter = new JComboBox();

  private JCheckBox Januar = new JCheckBox();
  private JCheckBox Februar = new JCheckBox();
  private JCheckBox jCheckBox12 = new JCheckBox();
  private JCheckBox jCheckBox13 = new JCheckBox();
  private JCheckBox jCheckBox14 = new JCheckBox();
  private JCheckBox jCheckBox15 = new JCheckBox();
  private JCheckBox jCheckBox16 = new JCheckBox();
  private JCheckBox jCheckBox17 = new JCheckBox();
  private JCheckBox jCheckBox18 = new JCheckBox();
  private JCheckBox jCheckBox19 = new JCheckBox();
  private JCheckBox jCheckBox110 = new JCheckBox();
  private JCheckBox jCheckBox111 = new JCheckBox();
  private JTextField KaffeeKasse = new JTextField();
  private TextArea textArea1 = new TextArea("", 1, 1, TextArea.SCROLLBARS_NONE);
  public String Mitarbeiter1;

  private JButton jButton1 = new JButton();
  // Ende Attribute

  public MsAccessFrame (String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 969;
    int frameHeight = 565;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    
    

    // Anfang Komponenten

    Mitarbeiter.setBounds(24, 81, 217, 24);
    Mitarbeiter.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
         System.out.println("JComboBox****Pressed");

        Mitarbeiter_ActionPerformed(e);
      }
    });
    cp.add(Mitarbeiter);
    Januar.setBounds(272, 80, 97, 18);
    Januar.setText("Januar");
    Januar.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e)  {
         System.out.println("CheckBox**Januar**Pressed");

               
               

        Januar_ActionPerformed(e);
      }
    });
    cp.add(Januar);
    Februar.setBounds(272, 104, 97, 18);
    Februar.setText("Februar");
    cp.add(Februar);
    jCheckBox12.setBounds(272, 128, 97, 18);
    jCheckBox12.setText("März");
    cp.add(jCheckBox12);
    jCheckBox13.setBounds(272, 152, 97, 18);
    jCheckBox13.setText("April");
    cp.add(jCheckBox13);
    jCheckBox14.setBounds(272, 176, 73, 18);
    jCheckBox14.setText("Mai");
    cp.add(jCheckBox14);
    jCheckBox15.setBounds(272, 200, 97, 18);
    jCheckBox15.setText("Juni");
    cp.add(jCheckBox15);
    jCheckBox16.setBounds(272, 224, 97, 18);
    jCheckBox16.setText("Juli");
    cp.add(jCheckBox16);
    jCheckBox17.setBounds(272, 248, 97, 18);
    jCheckBox17.setText("August");
    cp.add(jCheckBox17);
    jCheckBox18.setBounds(272, 272, 97, 18);
    jCheckBox18.setText("September");
    cp.add(jCheckBox18);
    jCheckBox19.setBounds(272, 296, 89, 18);
    jCheckBox19.setText("Oktober");
    cp.add(jCheckBox19);
    jCheckBox110.setBounds(272, 320, 97, 18);
    jCheckBox110.setText("November");
    cp.add(jCheckBox110);
    jCheckBox111.setBounds(272, 344, 97, 18);
    jCheckBox111.setText("Dezember");
    cp.add(jCheckBox111);
    KaffeeKasse.setBounds(24, 8, 105, 26);
    KaffeeKasse.setText("KaffeeKasse");
    KaffeeKasse.setFont(new Font("Arial Black", Font.BOLD, 13));
    cp.add(KaffeeKasse);
    textArea1.setBounds(416, 79, 385, 275);

    cp.add(textArea1);
    jButton1.setBounds(24, 152, 75, 25);
    jButton1.setText("jButton1");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {

        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden

  public void Mitarbeiter_ActionPerformed(ActionEvent evt) {

  }


  public void Januar_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void Januar_ItemStateChanged(ItemEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  // Ende Methoden

  public static void main(String[] args)throws IOException   {
    new MsAccessFrame("frame");

}

  }
 
Zuletzt bearbeitet von einem Moderator:
Du hast ja auch 2 Main Methoden, was soll denn da sinnvolles passieren? Schreib die Datenbank-Klasse um, damit die Konstruktoren und Instanzmethoden hat, dann kannst du auch:
Java:
MSAccessExample dbaccess = new MSAccessExample();
dbaccess.machwas();
machen
 
Danke schon mal, hätte ich auch selbst drauf kommen müssen 🙂
Wie kann ich denn die Funktion dann über einen Button ausführen lassen, weiß gerade nicht wirklich weiter.
 
Der ActionListener ist mir bekannt ich weiß nur nicht wie ich am besten die Daten der DB Klasse auf der ich jetzt Zugriff habe durch
MSAccessExample dbaccess = new MSAccessExample(); verarbeiten kann.
Kannst du mir vielleicht ein beispiel geben.
 
JETZT hast du gar kein Zugriff auf die Daten, weil du keine Daten hast. Du gibst es ja einfach in der Console aus.
Java:
public class MSAccessExample {
  public String readData() {
    return "Daten, die gelesen wurden sind";
  }
}

Java:
public class MsAccessFrame {
  private MSAccessExample dbAccess;
  public MsAccessFrame() {
    ...
    dbAccess = new MSAccessExample();
  }
  ...
  public void actionPerformed(ActionEvent evt) {
    someLabel.setText(dbAccess.readData());
  }
}

So grob könnte es aussehen...
 
Vielen Dank schon mal hast mir gut geholfen, jetzt werd ich mich mal an die Arbeit machen mal sehen was dabei rum kommt 🙂
 
Jetzt bekomm ich viele Fehler und zwar wird der ganze code vom MSAccessExample mit "<identifier> expected" angemekkert mhmm ..
 
Also hier mal der Code 🙂



[JAVA=42]
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.ActionListener;
import java.sql.*;

import java.lang.Throwable ;
import java.io.*;
/**
* @author M.Jäger
*
*/
public class MSAccessExample extends JFrame {




Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Treiber erfolgreich geladen");

Connection con = DriverManager.getConnection("jdbc😱dbc😀RIVER={Microsoft Access Driver (*.mdb)};DBQ=E:/tutorial/javadb.mdb");
Statement stmt = con.createStatement();

String updateString = "UPDATE Personal SET Vorname = 'Hans' WHERE Vorname LIKE 'mann'";
stmt.executeUpdate(updateString);

ResultSet rs = stmt.executeQuery("SELECT *from Personal");
ResultSetMetaData rsmd = rs.getMetaData();
int clmCnt = rsmd.getColumnCount();






while (rs.next()) {
for (int i = 1; i <= clmCnt; i++) {
System.out.print(rs.getString(i));
//System.out.print();


}
System.out.println();

}
rs.close();
stmt.close();
con.close();

public String readData(){/////////////////////////NEU/////////////////
return rs.getString(i));////////////////////////NEU////////////////
}
[/code]
[JAVA=42]

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.ActionListener;
import java.sql.*;

import java.lang.Throwable ;
import java.io.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 17.03.2011
* @author
*/

public class MsAccessFrame extends JFrame {


// Anfang Attribute
private String[] MitarbeiterData = {};
private JComboBox Mitarbeiter = new JComboBox();

private JCheckBox Januar = new JCheckBox();
private JCheckBox Februar = new JCheckBox();
private JCheckBox jCheckBox12 = new JCheckBox();
private JCheckBox jCheckBox13 = new JCheckBox();
private JCheckBox jCheckBox14 = new JCheckBox();
private JCheckBox jCheckBox15 = new JCheckBox();
private JCheckBox jCheckBox16 = new JCheckBox();
private JCheckBox jCheckBox17 = new JCheckBox();
private JCheckBox jCheckBox18 = new JCheckBox();
private JCheckBox jCheckBox19 = new JCheckBox();
private JCheckBox jCheckBox110 = new JCheckBox();
private JCheckBox jCheckBox111 = new JCheckBox();
private JTextField KaffeeKasse = new JTextField();
private TextArea textArea1 = new TextArea("", 1, 1, TextArea.SCROLLBARS_NONE);
public String Mitarbeiter1;
private MSAccessExample dbaccess; ////////////////////NEU//////////////////////




private JButton jButton1 = new JButton();
// Ende Attribute

public MsAccessFrame (String title) {
// Frame-Initialisierung
super(title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 969;
int frameHeight = 565;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);



// Anfang Komponenten


dbaccess = new MSAccessExample();/////////////////////////////NEU////////////////////////////

Mitarbeiter.setBounds(24, 81, 217, 24);
Mitarbeiter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("JComboBox****Pressed");

Mitarbeiter_ActionPerformed(e);
}
});
cp.add(Mitarbeiter);
Januar.setBounds(272, 80, 97, 18);
Januar.setText("Januar");
Januar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("CheckBox**Januar**Pressed");




Januar_ActionPerformed(e);
}
});
cp.add(Januar);
Februar.setBounds(272, 104, 97, 18);
Februar.setText("Februar");
cp.add(Februar);
jCheckBox12.setBounds(272, 128, 97, 18);
jCheckBox12.setText("März");
cp.add(jCheckBox12);
jCheckBox13.setBounds(272, 152, 97, 18);
jCheckBox13.setText("April");
cp.add(jCheckBox13);
jCheckBox14.setBounds(272, 176, 73, 18);
jCheckBox14.setText("Mai");
cp.add(jCheckBox14);
jCheckBox15.setBounds(272, 200, 97, 18);
jCheckBox15.setText("Juni");
cp.add(jCheckBox15);
jCheckBox16.setBounds(272, 224, 97, 18);
jCheckBox16.setText("Juli");
cp.add(jCheckBox16);
jCheckBox17.setBounds(272, 248, 97, 18);
jCheckBox17.setText("August");
cp.add(jCheckBox17);
jCheckBox18.setBounds(272, 272, 97, 18);
jCheckBox18.setText("September");
cp.add(jCheckBox18);
jCheckBox19.setBounds(272, 296, 89, 18);
jCheckBox19.setText("Oktober");
cp.add(jCheckBox19);
jCheckBox110.setBounds(272, 320, 97, 18);
jCheckBox110.setText("November");
cp.add(jCheckBox110);
jCheckBox111.setBounds(272, 344, 97, 18);
jCheckBox111.setText("Dezember");
cp.add(jCheckBox111);
KaffeeKasse.setBounds(24, 8, 105, 26);
KaffeeKasse.setText("KaffeeKasse");
KaffeeKasse.setFont(new Font("Arial Black", Font.BOLD, 13));
cp.add(KaffeeKasse);
textArea1.setBounds(416, 79, 385, 275);

cp.add(textArea1);
jButton1.setBounds(24, 152, 75, 25);
jButton1.setText("jButton1");
jButton1.setMargin(new Insets(2, 2, 2, 2));
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {


jButton1_ActionPerformed(evt);
}
});
cp.add(jButton1);
// Ende Komponenten

setResizable(false);
setVisible(true);
}

// Anfang Methoden








public void Mitarbeiter_ActionPerformed(ActionEvent evt) {

}


public void Januar_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
}

public void Januar_ItemStateChanged(ItemEvent evt) {
// TODO hier Quelltext einfügen
}

public void jButton1_ActionPerformed(ActionEvent evt) {
textArea1.setText(dbaccess.readData()); ////////////////////////NEU///////////////////////////////
}

// Ende Methoden

public static void main(String[] args)throws IOException {
new MsAccessFrame("frame");



MSAccessExample daccess = new MSAccessExample();








}

}

[/code]


mhmmm vielleicht ist so ein Programm zu schreiben auch ein wenig zu krass für mich aber ich möchte es gerne umsetzen 🙂
 
[JAVA=42]
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.ActionListener;
import java.sql.*;

import java.lang.Throwable ;
import java.io.*;
/**
* @author M.Jäger
*
*/
public class MSAccessExample extends JFrame {




Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Treiber erfolgreich geladen");

Connection con = DriverManager.getConnection("jdbc😱dbc😀RIVER={Microsoft Access Driver (*.mdb)};DBQ=E:/tutorial/javadb.mdb");
Statement stmt = con.createStatement();

String updateString = "UPDATE Personal SET Vorname = 'Hans' WHERE Vorname LIKE 'mann'";
stmt.executeUpdate(updateString);

ResultSet rs = stmt.executeQuery("SELECT *from Personal");
ResultSetMetaData rsmd = rs.getMetaData();
int clmCnt = rsmd.getColumnCount();






while (rs.next()) {
for (int i = 1; i <= clmCnt; i++) {
System.out.print(rs.getString(i));
//System.out.print();


}
System.out.println();

}
rs.close();
stmt.close();
con.close();

public String readData(){/////////////////////////NEU/////////////////
return rs.getString(i));////////////////////////NEU////////////////
}
[/code]


mhmmm vielleicht ist so ein Programm zu schreiben auch ein wenig zu krass für mich aber ich möchte es gerne umsetzen 🙂

Was denn das für ne Klasse? Und warum erbt sie von JFrame???
Der obere Code steht in keiner Methode im nirgendwo deiner Klasse?

mhmmm vielleicht ist so ein Programm zu schreiben auch ein wenig zu krass für mich aber ich möchte es gerne umsetzen 🙂

Du hast es erkannt =). Geh lieber nochmal 2 Schritte zurück und lern was Klassen,Objekte,Methoden, Membervariablen sind. Und verstehe das, weil so wie die Klasse oben aufgebaut ist hast du nicht wirklich nen Plan was du machst, oder 😉?
 
Gut der obere Code ist Schwachsinn ist mir auch schon aufgefallen hab da erstmal aufgeräumt.
Erkannt hab ich das wohl möchte das ganze trotzdem gerne umsetzen mhmm ....
[JAVA=42]
import java.awt.*;
import java.sql.*;
import java.io.*;



public class MSAccessExample {




Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Treiber erfolgreich geladen");

Connection con = DriverManager.getConnection("jdbc😱dbc😀RIVER={Microsoft Access Driver

(*.mdb)};DBQ=E:/tutorial/javadb.mdb");
Statement stmt = con.createStatement();

String updateString = "UPDATE Personal SET Vorname = 'Hans' WHERE Vorname LIKE 'mann'";
stmt.executeUpdate(updateString);

ResultSet rs = stmt.executeQuery("SELECT *from Personal");
ResultSetMetaData rsmd = rs.getMetaData();
int clmCnt = rsmd.getColumnCount();






while (rs.next()) {
for (int i = 1; i <= clmCnt; i++) {
System.out.print(rs.getString(i));
//System.out.print();


}
System.out.println();

}
rs.close();
stmt.close();
con.close();

public String readData(){/////////////////////////NEU/////////////////
return rs.getString(i));////////////////////////NEU////////////////
}


}

[/code]
 
Naja nur weil du die Import rausgemacht hast wird der Code nicht besser...
Code mitten in einer Klasse ohne Methoden geht nunmal nicht...
 
Ich werd mich erstmal noch ein bissl mit den java Grundlagen beschäftigen ist wohl doch besser 🙂
 

Zurück
Oben