PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Einfache "Datenbank"



Engel der Furcht
15.11.2012, 11:29
Hallo Leute, ich bin im Moment dabei eine kleine Idee umzusetzen.
Ich möchte mit einem Array eine kleine Datenbank aufbauen.

Ich hab in dem einen Fenster eine stinknormale Dateneingabe.
In einem anderen Fenster soll gleichzeitig die eingegebenen Daten angesehen werden können.
16001
So, wie bringe ich nun meinen Array "String[][] datensatz" in die Klasse "Uebersicht"?

Ich hab mir gedacht ich mache eine weitere Klasse namens Datensatz, und in Uebersicht werden dann je nach Menge der Datensätze Objekte erzeugt.

Probeweise hab ich jetzt nur einen Datensatz für die Eingabe.



package Risikomanagement;
import java.awt.*;
import java.awt.event.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Dateneingabe extends Frame implements ActionListener, KeyListener
{
private MenuBar menubar;
private Menu datamenu;
private MenuItem showmenu;
private MenuItem savemenu;
private MenuItem loadmenu;
private MenuItem exitmenu;

private Button okaybutton;
private Button savebutton;
private Button searchbutton;
private Button loadbutton;
private Button diagrammbutton;
private String datensatz[][] = new String[999][999];
private int i = 1;
private int j = 1;

TextField tfabt ;
TextField tfbenenn ;
TextField tfmass ;
TextField tfeinfl ;
TextField tfschwer ;
TextField tfrisik ;
TextField tfterm ;

public Dateneingabe(String windowtitle)
{
super(windowtitle);
setSize(640,480);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);}});
makeGUI();
setVisible(true);


}
private void makeGUI()
{
GridLayout mainlayout = new GridLayout(3,1);
setLayout(mainlayout);

menubar = new MenuBar();
datamenu = new Menu();
showmenu = new MenuItem("DatenÜbersicht");
savemenu = new MenuItem ("Daten sichern");
loadmenu = new MenuItem ("Daten laden");
exitmenu = new MenuItem ("Beenden");

okaybutton = new Button ("Okay");
savebutton = new Button ("Speichern");
searchbutton = new Button ("Bestimmten Datensatz anzeigen");
loadbutton = new Button ("Laden");
diagrammbutton = new Button ("Diagrammauswertung");

Panel titlePanel = new Panel();
Label titleLabel = new Label ("Risikomanagemant");

GridLayout dataLayout = new GridLayout(2,7);
Panel dataField = new Panel ();

Label abteilung = new Label("Abteilung");
Label bennenung = new Label("Benennung des Risikos");
Label massnahme = new Label("Maßnahme");
Label einfluss = new Label ("Einfluss");
Label schweregrad = new Label ("Schweregrad");
Label risiko = new Label ("Risiko");
Label termverant = new Label ("Termin/Verant.");

tfabt = new TextField ();
tfbenenn = new TextField();
tfmass = new TextField();
tfeinfl = new TextField();
tfschwer = new TextField();
tfrisik = new TextField();
tfterm = new TextField();

datamenu.add(exitmenu);
datamenu.add(loadmenu);
datamenu.add(savemenu);
datamenu.add(showmenu);
menubar.add(datamenu);
setMenuBar(menubar);



GridLayout buttonLayout = new GridLayout (1,5);
Panel buttonPanel = new Panel();

titlePanel.add(titleLabel);
add(titlePanel);

dataField.setLayout(dataLayout);
dataField.add(abteilung);
dataField.add(bennenung);
dataField.add(massnahme);
dataField.add(einfluss);
dataField.add(schweregrad);
dataField.add(risiko);
dataField.add(termverant);
dataField.add(tfabt);
dataField.add(tfbenenn);
dataField.add(tfmass);
dataField.add(tfeinfl);
dataField.add(tfschwer);
dataField.add(tfrisik);
dataField.add(tfterm);
add (dataField);


buttonPanel.setLayout(buttonLayout);
buttonPanel.add(okaybutton);
buttonPanel.add(savebutton);
buttonPanel.add(searchbutton);
buttonPanel.add(loadbutton);
buttonPanel.add(diagrammbutton);
add(buttonPanel);

tfabt.addKeyListener(this);
tfbenenn.addKeyListener(this);
tfmass.addKeyListener(this);
tfeinfl.addKeyListener(this);
tfschwer.addKeyListener(this);
tfrisik.addKeyListener(this);
tfterm.addKeyListener(this);

okaybutton.addActionListener(this);
savebutton.addActionListener(this);
loadbutton.addActionListener(this);
searchbutton.addActionListener(this);
diagrammbutton.addActionListener(this);
pack();

}

public static void main(String[] args)
{
Dateneingabe dateneingabe = new Dateneingabe("Dateneingabe");
Uebersicht uebersicht = new Uebersicht ("Übersicht");
}

public void actionPerformed(ActionEvent e)
{
Object ae = e.getSource();
if(ae == okaybutton)
{
if(i==8)
{
j++;
i=1;
}

}
if(ae == savebutton)
{

}
if(ae == loadbutton)
{

}
if(ae == searchbutton)
{

}
if(ae == diagrammbutton)
{

}

}

public void keyTyped(KeyEvent e)
{
}
public void keyPressed(KeyEvent e)
{
int ke = e.getKeyCode();
if (ke == KeyEvent.VK_ENTER)
{
if (i == 1)
{
tfbenenn.requestFocus();
}
if (i == 2)
{
tfmass.requestFocus();
}
if (i == 3)
{
tfeinfl.requestFocus();
}
if (i == 4)
{
tfschwer.requestFocus();
}
if (i == 5)
{
tfrisik.requestFocus();
}
if (i == 6)
{
tfterm.requestFocus();
}
if (i == 7)
{
tfabt.requestFocus();
datensatzspeichern();
}
i++;

}
}

public void datensatzspeichern()
{
datensatz[1][j] = tfabt.getText();
datensatz[2][j] = tfbenenn.getText();
datensatz[3][j] = tfmass.getText();
datensatz[4][j] = tfeinfl.getText();
datensatz[5][j] = tfschwer.getText();
datensatz[6][j] = tfrisik.getText();
datensatz[7][j] = tfterm.getText();
tfabt.setText("");
tfbenenn.setText("");
tfmass.setText("");
tfeinfl.setText("");
tfschwer.setText("");
tfrisik.setText("");
tfterm.setText("");
Datensatz datafield = new Datensatz(datensatz,i,j);
}

public void keyReleased(KeyEvent e)
{
}

}






package Risikomanagement;

import java.io.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;



public class Uebersicht extends Frame
{

public Uebersicht(String windowtitle)
{
super(windowtitle);
setSize(300,300);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
dispose();}});
makeGUI();
setVisible(true);
}

private void makeGUI()
{
setLayout(new GridLayout(1,7));
Panel p = new Panel();

Label abteilung = new Label("Abteilung");
Label benennung = new Label("Benennung des Risikos");
Label massnahme = new Label("Maßnahme");
Label einfluss = new Label ("Einfluss");
Label schweregrad = new Label ("Schweregrad");
Label risiko = new Label ("Risiko");
Label termverant = new Label ("Termin/Verant.");

add (abteilung);
add (benennung);
add(massnahme);
add(einfluss);
add(schweregrad);
add(risiko);
add(termverant);
pack();
}
public void actualization(Panel p)
{
add(p);
repaint();


}

}







package Risikomanagement;

import java.awt.*;

public class Datensatz extends Frame
{
public int i, j;
private GridLayout gl;
private Panel p;
private TextField abteilung;
private TextField benennung;
private TextField massnahme;
private TextField einfluss;
private TextField schweregrad;
private TextField risiko;
private TextField terminverant;


public String[][] datensatz;
public Datensatz(String[][] datensatz,int i,int j)
{
this.j = j;
this.datensatz= datensatz;
buildTable();
fillTable();

}
public void buildTable()
{
gl = new GridLayout(1,7);
p = new Panel();
abteilung = new TextField();
benennung = new TextField();
massnahme = new TextField();
einfluss = new TextField();
schweregrad = new TextField();
risiko = new TextField();
terminverant = new TextField();

p.setLayout(gl);
p.add(abteilung);
p.add(benennung);
p.add(massnahme);
p.add(einfluss);
p.add(schweregrad);
p.add(risiko);
p.add(terminverant);


}
public void fillTable()
{
abteilung.setText(datensatz[1][j]);
benennung.setText(datensatz[2][j]);
massnahme.setText(datensatz[3][j]);
einfluss.setText(datensatz[4][j]);
schweregrad.setText(datensatz[5][j]);
risiko.setText(datensatz[6][j]);
terminverant.setText(datensatz[7][j]);
Uebersicht actual = null;
actual.actualization(p);
}


}




Meine Idee ist bestimmt voll bescheuert :D

Whiz-zarD
15.11.2012, 11:45
Schon mal an eine echte Datenbank nachgedacht? z.B. SQLite?
Ansonsten mach dich vertraut mit dem EVA-Prinzip (http://de.wikipedia.org/wiki/EVA-Prinzip).
Und das, was du suchst, sind sog. Listener (http://de.wikipedia.org/wiki/Listener).

Außerdem ist String[999][999] nicht grad effizient, da der Speicher für dieses Array sofort reserviert wird.
Wenn du nur ein Datensatz speichert, hast du zu viel Speicher verbraucht, und wenn du mehr als 999 Datensätze speichern möchtest, hast du auch verloren, da du ein Array nur sehr umständlich erweitern kannst (neues anlegen und das alte Array in das neue kopieren). Hier wäre eine verkettete Liste (z.B. ArrayList) angebracht.