Javafx - I\'m not sure if my flower is not saving or display function is not wor
ID: 3821715 • Letter: J
Question
Javafx - I'm not sure if my flower is not saving or display function is not working.
After I enter flower property and click save, then go back to menu - display, nothing is displaying.
//Driver.java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.text.Text;
public class Driver extends Application {
private MenuItem addPlant;
private MenuItem displayPlant;
private MenuItem exitMenu;
private BorderPane pane;
private BorderPane addPane;
private BorderPane displayPane;
//private Text msg;
private Button save;
private List<Plant> plantPack = new ArrayList<>();
@Override
public void start(Stage primaryStage) {
EventHandler<ActionEvent> action = changeTabPlacement();
VBox menuBox = new VBox();
pane = new BorderPane();
MenuBar menuBar = new MenuBar();
Menu startMenu = new Menu("Start");
addPlant = new MenuItem("Add Plant");
addPlant.setOnAction(action);
displayPlant = new MenuItem("Display Plant");
displayPlant.setOnAction(action);
exitMenu = new MenuItem("Exit");
exitMenu.setOnAction(action);
startMenu.getItems().addAll(addPlant, displayPlant, exitMenu);
menuBar.getMenus().addAll(startMenu);
//pane.setTop(menuBar);
Scene scene = new Scene(pane, 500, 500);
menuBox.getChildren().add(menuBar);
pane.setTop(menuBox);
primaryStage.setTitle("FlowerPack Interface");
primaryStage.setScene(scene);
primaryStage.show();
}
private EventHandler<ActionEvent> changeTabPlacement() {
return new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
MenuItem mItem = (MenuItem) event.getSource();
if(mItem == addPlant) {
//msg.setText("Please choose plant type");
addPlant();
} else if(mItem == displayPlant) {
displayPlant();
}
}
};
}
private void addPlant() {
addPane = new BorderPane();
addPane.setPrefSize(450, 450);
RadioButton rbFlower = new RadioButton("Flower");
RadioButton rbFungus = new RadioButton("Fungus");
RadioButton rbWeed = new RadioButton("Weed");
RadioButton rbHerb = new RadioButton("Herb");
ToggleGroup rbGroup = new ToggleGroup();
rbFlower.setToggleGroup(rbGroup);
rbFungus.setToggleGroup(rbGroup);
rbWeed.setToggleGroup(rbGroup);
rbHerb.setToggleGroup(rbGroup);
rbFlower.setOnAction(action -> {
if (rbFlower.isSelected()) {
addFlower(save);
}
});
HBox plantBox = new HBox(rbFlower, rbFungus, rbWeed, rbHerb);
plantBox.setAlignment(Pos.TOP_CENTER);
plantBox.setSpacing(10);
pane.setCenter(addPane);
addPane.setTop(plantBox);
}
private void addFlower(Button save) {
Text msg1 = new Text("Flower Saved!");
TextField tfFlowerID = new TextField();
TextField tfFlowerName = new TextField();
TextField tfFlowerColor = new TextField();
TextField tfFlowerSmell = new TextField();
CheckBox cbFlowerThorns = new CheckBox();
save = new Button("Save Flower");
save.setAlignment(Pos.CENTER);
addPane.setBottom(save);
GridPane gridPane = new GridPane();
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(5);
gridPane.setVgap(5);
gridPane.add(new Label("Flower ID:"), 0, 0);
gridPane.add(tfFlowerID, 1, 0);
gridPane.add(new Label("Flower Name:"), 0, 1);
gridPane.add(tfFlowerName, 1, 1);
gridPane.add(new Label("Flower Color:"), 0, 2);
gridPane.add(tfFlowerColor, 1, 2);
gridPane.add(new Label("Flower Smell:"), 0, 3);
gridPane.add(tfFlowerSmell, 1, 3);
gridPane.add(new Label("Flower Thorn? (Check if YES)"), 0, 4);
gridPane.add(cbFlowerThorns, 1, 4);
//gridPane.add(new Label("Check if Yes"), 2, 4);
addPane.setCenter(gridPane);
save.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
String flowerID = tfFlowerID.getText();
String flowerName = tfFlowerName.getText();
String flowerColor = tfFlowerColor.getText();
String flowerSmell = tfFlowerSmell.getText();
Plant plant = new Flower();
plant.setID(flowerID);
plant.setName(flowerName);
plant.setColor(flowerColor);
((Flower)plant).setSmell(flowerSmell);
plantPack.add(plant);
msg1.setText("Flower Added!");
}
});
}
private void displayPlant() {
displayPane = new BorderPane();
displayPane.setPrefSize(450, 450);
ListView<Plant> lv = new ListView<>
(FXCollections.observableArrayList(plantPack));
lv.setPrefSize(400, 400);
StringBuilder text = new StringBuilder();
for(Plant plant : plantPack) {
if(plant instanceof Flower) {
text.append(" Flower: ");
}
text.append(plant);
}
//return;
pane.setCenter(displayPane);
}
public static void main(String[] args) {
Application.launch(args);
}
}
//Plant.java
public class Plant {
private String Name;
private String ID;
private String Color;
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getColor() {
return Color;
}
public void setColor(String Color) {
this.Color = Color;
}
public String toString() {
return " Name: " + Name + " ID: " + ID + " Color: " + Color;
}
}
//Flower.java
public class Flower extends Plant {
private String Smell;
private String Thorns;
public String getSmell() {
return Smell;
}
public void setSmell(String Smell) {
this.Smell = Smell;
}
public String getThorns() {
return Thorns;
}
public void setThorns(String Thorns) {
this.Thorns = Thorns;
}
public void Name() {
super.getName();
}
public void ID() {
super.getID();
}
public void Color() {
super.getColor();
}
public String toString() {
return super.toString() + " Smell: " + Smell + " withThorns: " + Thorns;
}
}
Explanation / Answer
package com.kodehelp.sftp; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; /** * @author kodehelp * */ public class SFTPinJava { /** * */ public SFTPinJava() { // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { String SFTPHOST = "10.20.30.40"; int SFTPPORT = 22; String SFTPUSER = "username"; String SFTPPASS = "password"; String SFTPWORKINGDIR = "/export/home/kodehelp/"; Session session = null; Channel channel = null; ChannelSftp channelSftp = null; try{ JSch jsch = new JSch(); session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT); session.setPassword(SFTPPASS); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); channel = session.openChannel("sftp"); channel.connect(); channelSftp = (ChannelSftp)channel; channelSftp.cd(SFTPWORKINGDIR); File f = new File(FILETOTRANSFER); channelSftp.put(new FileInputStream(f), f.getName()); }catch(Exception ex){ ex.printStackTrace(); } } }
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.