hi,
Ich muss ein Adress Buch schreiben mit einer GUI. über die GUI kann man über nen Button sich dann die Kontakte anzeigen lassen.
Nun muss ich von der Klasse showContacts aus auf die Main klasse zugreifen um die Instanz von AdressBook zu kriegen, wo ya die gespeicherten Daten (in einer TreeMap) sind um sie anzeigen zu können.
ich hänge seit Tagen an diesem Problem... ich hoffe ihr könnt mir helfen.
Hier die main:
Hier wird per Gui der Kontakt hinzugefügt.
In der Klasse Adressbook ist eine TreeMap, wo die Kontakte drin gespeichert sind. und über verschiedene Methoden verwaltet werden können:
AdressBook:
und zu guter letzt die Klasse ShowContacts wo das ganze angezeigt werden soll:
Hab da immer mal ein bisschen rumprobiert also nicht wundern wenn da ein bisschen müll steht..
Danke schonmal...
Ich muss ein Adress Buch schreiben mit einer GUI. über die GUI kann man über nen Button sich dann die Kontakte anzeigen lassen.
Nun muss ich von der Klasse showContacts aus auf die Main klasse zugreifen um die Instanz von AdressBook zu kriegen, wo ya die gespeicherten Daten (in einer TreeMap) sind um sie anzeigen zu können.
ich hänge seit Tagen an diesem Problem... ich hoffe ihr könnt mir helfen.
Hier die main:
Java:
package book;import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.TreeView;
public class Main extends Application implements Initializable {
@FXML
private Button btnsave;
@FXML
private Button btnshow;
@FXML
private TextField txtemail;
@FXML
private Label lbltel;
@FXML
private Label lblemailc;
@FXML
private Label lbladc;
@FXML
private TextField txtad;
@FXML
private Label lblemail;
@FXML
private Label lblkey;
@FXML
private Label lblnc;
@FXML
private Label lblvn;
@FXML
private Label lblnnc;
@FXML
private Button btnadd;
@FXML
private Label lblnn;
@FXML
private Label lbltelc;
@FXML
private TextField txtemailc;
@FXML
private TextField txttel;
@FXML
private TextField txttelc;
@FXML
private TextField txtnn;
@FXML
private TextField txthn;
@FXML
private TextField txtkey;
@FXML
private TextField txthnc;
@FXML
private TextField txtnnc;
@FXML
private Button btnshowCon;
@FXML
private TextField txtvn;
@FXML
private TextField txtadc;
@FXML
private Button btnchange;
@FXML
private TextField txtvnc;
@FXML
private Label lblad;
@FXML
private Button btndel;
@FXML
void handlechangebtn(ActionEvent event) {
}
@FXML
void handlesavebtn(ActionEvent event) {
}
@FXML
void handledelbtn(ActionEvent event) {
}
@FXML
void handleshowbtn(ActionEvent event) {
}
@FXML
void handleShowCon(ActionEvent event) {
}
@FXML
void hinzu(ActionEvent event) throws AlreadyExistsException {
}
@Override
public void start(Stage prim) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/book/root.fxml"));
prim.setTitle("Neuer Eintrag - Günay Catak s812496");
prim.setScene(new Scene (root,370,560));
prim.setResizable(false);
prim.show();
}
@Override
public void initialize(URL location, ResourceBundle resources) {
AdressBook book = new AdressBook();
//Disable change inputs
txtvnc.setDisable(true);
txtnnc.setDisable(true);
txttelc.setDisable(true);
txtadc.setDisable(true);
txthnc.setDisable(true);
txtemailc.setDisable(true);
btnadd.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
ContactDetails cd = new ContactDetails(txtvn.getText().toString(),txtnn.getText().toString(),txtad.getText().toString(),txttel.getText(),txthn.getText(),txtemail.getText().toString());
try {
book.addDetails(cd);
book.setSizeOfBook(book.getNumberofEntries());
System.out.println("Eintrag hinzugefügt");
} catch (AlreadyExistsException e) {
// TODO Auto-generated catch block
e.getMessage();
}
System.out.println(book.getNumberofEntries());
}
});
btnchange.setOnAction(new EventHandler <ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
//Enable change inputs
txtvnc.setDisable(false);
txtnnc.setDisable(false);
txttelc.setDisable(false);
txtadc.setDisable(false);
txthnc.setDisable(false);
txtemailc.setDisable(false);
}
});
btnshow.setOnAction(new EventHandler <ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
try {
txtvnc.setText(book.getDetails(txtkey.getText()).vorname);
txtnnc.setText(book.getDetails(txtkey.getText()).nachname);
txtadc.setText(book.getDetails(txtkey.getText()).adresse);
txtemailc.setText(book.getDetails(txtkey.getText()).email);
txttelc.setText(book.getDetails(txtkey.getText()).TelNr);
txthnc.setText(book.getDetails(txtkey.getText()).hausnr);
} catch (DetailsNotExistException e) {
e.getMessage("Der Eintrag existiert nicht!!");
}
}
});
btnsave.setOnAction(new EventHandler <ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
try {
book.getDetails(txtkey.getText());
ContactDetails cd2 = new ContactDetails(txtvnc.getText(), txtnnc.getText(), txtadc.getText(), txttelc.getText(), txthnc.getText(), txtemailc.getText());
book.changeDetails(txtkey.getText(), cd2);
} catch (NoParamException e) {
e.printStackTrace();
} catch (DetailsNotExistException e) {
// TODO Auto-generated catch block
e.getMessage("Der Eintrag esxistiert nicht!");
}
System.out.println("Eintrag geändert");
}
});
btndel.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
try {
book.removeDetails(txtkey.getText());
} catch (DetailsNotExistException e) {
e.getMessage();
}
System.out.println("Eintrag gelöscht");
System.out.println("Übrige Einträge: " + book.getNumberofEntries());
}
});
btnshowCon.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
try {
Parent root2 = FXMLLoader.load(getClass().getResource("/book/root2.fxml"));
Stage stage = new Stage();
stage.setTitle("Neuer Eintrag - Günay Catak s812496");
stage.setScene(new Scene (root2,1190,390));
stage.setResizable(false);
stage.show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
Hier wird per Gui der Kontakt hinzugefügt.
In der Klasse Adressbook ist eine TreeMap, wo die Kontakte drin gespeichert sind. und über verschiedene Methoden verwaltet werden können:
AdressBook:
Java:
package book;import java.util.TreeMap;
public class AdressBook implements AdressBookInterface {
public int sizeOfBook;
public TreeMap <String,ContactDetails> book = new TreeMap<>();
@Override
public ContactDetails getDetails(String key) throws DetailsNotExistException {
if (book.get(key) == null)
throw new DetailsNotExistException();
else
return book.get(key);
}
public void setSizeOfBook(int size) {
this.sizeOfBook = size;
}
public int getSizeOfBook() {
return sizeOfBook;
}
@Override
public boolean KeyInUse(String key) throws NoParamException {
if (key == null || key == "") {
throw new NoParamException ();
}
if (book.containsKey(key)){
return true;
}
return false;
}
@Override
public void addDetails(ContactDetails details)
throws AlreadyExistsException {
if (book.containsKey(details.vorname)) {
throw new AlreadyExistsException();
}
//zwei einträge mit verschiedenen keys (vorname,nachname)
book.put(details.vorname, details);
book.put(details.nachname, details);
}
@Override
public void changeDetails(String oldkey, ContactDetails details) throws NoParamException {
if (oldkey == null || oldkey =="")
throw new NoParamException();
book.replace(oldkey, details);
book.replace(details.nachname, details);
}
@Override
public ContactDetails[] search(String keyPrefix) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getNumberofEntries() {
return book.size() / 2;
}
@Override
public void removeDetails(String key) throws DetailsNotExistException {
book.remove(key);
if(key == null || key == " ")
throw new DetailsNotExistException();
}
}
und zu guter letzt die Klasse ShowContacts wo das ganze angezeigt werden soll:
Java:
package book;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ListView;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TreeView;
public class showContact implements Initializable {
@FXML
private TableColumn<?, ?> clmnn;
@FXML
private TableColumn<?, ?> clmad;
@FXML
private ListView<?> lstcon;
@FXML
private TableColumn<?, ?> clmvn;
@FXML
private TableColumn<?, ?> clmtelnr;
@FXML
private TableView<?> tblCon;
@FXML
private TreeView<?> treeCon;
@FXML
private TableColumn<?, ?> clmhn;
@FXML
private TableColumn<?, ?> clmemail;
AdressBook ab = new AdressBook();
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
System.out.println("Einträge: " + ab.getSizeOfBook());
//ObservableList
// ObservableList<ListView> ol = FXCollections.observableArrayList();
}
}
Hab da immer mal ein bisschen rumprobiert also nicht wundern wenn da ein bisschen müll steht..
Danke schonmal...
Zuletzt bearbeitet von einem Moderator: