Serdecznie was proszę!!!
Cześć to znowu ja. Z uwagi, że jest tu naprawdę sporo fachowców po raz kolejny zwracam się do was o prośbę mianowicie chce sobie zrobić aplikację. Robię w Scene Builderze, coś tam Swinga czytałem ale niewiele robiłem, bo podobno dłużej schodzi i jest to bardziej żmudne. Tak w ogóle znacie jakieś dobre książki o Scene Builderze, bo mało tego jest w języku polskim i czy warto nauczyć się i używać Swinga?
Co do mojej aplikacji to chce zrobić tak, żeby po naciśnięciu na przycisk (malariaButton - patrz klasa MainController.java) wyświetlił się tekst(w label o nazwie voidDiseaseInfo, malaria.printInfo - patrz klasa Encyclopedia). Wszystkie fx:id zdefiniowałem do każdej rzeczy z scene buildera. Po lewej mam przyciski, a po prawej pole pole tekstowe. Chciałbym, żebyście spojrzeli na klasę MainController.java i Encyclopedia.java
Tu widok ze Scene Buildera
http://vlep.pl/x8weas.jpg
klasa Main.java (standardowa)
package patogen.app;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent parent = (Parent)FXMLLoader.load(getClass().getResource("/pl/javastart/fxaction/view/MainPane.fxml"));
Scene scene = new Scene(parent);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Tu klasa MainController.java (ważne!!!) - spójrzcie na koniec tej klase
package patogen.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.Initializable;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
public class MainController implements Initializable{
@FXML
private MenuBar mainMenu;
@FXML
private Menu menu;
@FXML
private MenuItem closeItem;
@FXML
private Menu edition;
@FXML
private MenuItem deleteItem;
@FXML
private Menu help;
@FXML
private MenuItem aboutItem;
@FXML
private Label disease_informationLabel;
@FXML
private Button malariaButton;
@FXML
private Button HIVButton;
@FXML
private Button ebolaButton;
@FXML
private Label voidDiseaseInfo;
public void initialize(URL location, ResourceBundle resources) {
malariaButton.addEventFilter(ActionEvent.ACTION, new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Wygenerowano zdarzenie " + event.getEventType());
String text = mainTextArea.getText(); //nie ma pojęcia jak to zrobić zostawiłem default
voidDiseaseInfo.setText(malaria.printInfo()); //tu też
}
});
}
}
Klasa Encyclopedia.java - ważne!!!! tu jak włącze, żeby mi poszło w Eclipse to mi się wszystko wyświetla, nie wiem jak to zrobić, żeby mi się wyświetlał w Scene builderze po naciśnięciu przycisku.
package patogen.app;
public class Encyclopedia {
public static void main(String[] args){
Patogen malaria = new Patogen("Malaria", "Pierwotniak", "Gorączka, wymioty, ból głowy",
"Plasmodium", 296000000, 73050);
double fatality = (malaria.deaths/malaria.frequency)*100;
System.out.println(fatality);
Patogen HIV = new Patogen("AIDS", "Lentiwirus", "Wyniszczenie układu odpornościowego, częste choroby",
"Human immunodeficiency virus", 36700000, 1100000);
double fatality1 = (HIV.deaths/HIV.frequency)*100;
System.out.println(fatality1);
Patogen ebola = new Patogen("Ebola", "Filowirus", "Wysoka temperatura, bóle mięśni, biegunka, bóle brzucha, wymioty, wysypka",
"Zaire Ebolavirus", 0, 0);
malaria.printInfo();
HIV.printInfo();
ebola.printInfo();
System.out.println("Ebola jest już na wymarciu. Szacuje się, że niedługo zostanie zlikwidowana");
}
}
Tu klasa Patogen.java
package patogen.app;
public class Patogen {
public String name;
public String type;
public String symptoms;
public String causes;
double frequency;
int deaths;
double fatality;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSymptoms() {
return symptoms;
}
public void setSymptoms(String symptoms) {
this.symptoms = symptoms;
}
public String getCauses() {
return causes;
}
public void setCauses(String causes) {
this.causes = causes;
}
public double getFrequency() {
return frequency;
}
public void setFrequency(double frequency) {
this.frequency = frequency;
}
public int getDeaths() {
return deaths;
}
public void setDeaths(int deaths) {
this.deaths = deaths;
}
Patogen(String name, String type, String symptoms, String causes, double frequency,
int deaths) {
this.name = name;
this.type = type;
this.symptoms = symptoms;
this.causes = causes;
this.frequency = frequency;
this.deaths = deaths;
}
void printInfo() {
System.out.println("Nazwa choroby: " + name);
System.out.println("Typ patogenu: " + type);
System.out.println("Objawy: " + symptoms);
System.out.println("Organizm wywołujący chorobę: " + causes);
System.out.println("Liczba nosicieli (2015): " + frequency);
System.out.println("Liczba zmarłych (2015): " + deaths);
System.out.println("Śmiertelność (w procentach): " + fatality);;
}
}
Tu jeszcze daje plik MainPane.fxml, ale nie wiem czy się przyda
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.VBox?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
<top>
<AnchorPane prefHeight="18.0" prefWidth="600.0" BorderPane.alignment="CENTER">
<children>
<MenuBar fx:id="mainMenu" prefHeight="25.0" prefWidth="600.0">
<menus>
<Menu fx:id="menu" mnemonicParsing="false" text="Menu">
<items>
<MenuItem fx:id="closeItem" mnemonicParsing="false" text="Zamknij" />
</items>
</Menu>
<Menu fx:id="edition" mnemonicParsing="false" text="Edycja">
<items>
<MenuItem fx:id="deleteItem" mnemonicParsing="false" text="Usuń" />
</items>
</Menu>
<Menu fx:id="help" mnemonicParsing="false" text="Pomoc">
<items>
<MenuItem fx:id="aboutItem" mnemonicParsing="false" text="O programie" />
</items>
</Menu>
</menus>
</MenuBar>
</children>
</AnchorPane>
</top>
<left>
<VBox prefHeight="289.0" prefWidth="130.0" BorderPane.alignment="CENTER">
<children>
<Label fx:id="disease_informationLabel" alignment="CENTER" prefHeight="42.0" prefWidth="152.0" text=" Informacje o chorobie" />
<Button fx:id="malariaButton" mnemonicParsing="false" prefHeight="50.0" prefWidth="164.0" text="Malaria" />
<Button fx:id="HIVButton" mnemonicParsing="false" prefHeight="50.0" prefWidth="187.0" text="HIV" />
<Button fx:id="ebolaButton" mnemonicParsing="false" prefHeight="50.0" prefWidth="164.0" text="Ebola" />
</children>
</VBox>
</left>
<center>
<Label fx:id="voidDiseaseInfo" alignment="TOP_LEFT" prefHeight="375.0" prefWidth="485.0" BorderPane.alignment="CENTER" />
</center>
</BorderPane>