Create a Java FX GUI program that allows the user to insert data into a SQL data
ID: 3777671 • Letter: C
Question
Create a Java FX GUI program that allows the user to insert data into a SQL database. The goal of this project is to write a basic Java FX GUI database program. The program should have a list component which on launching the program shows the contents of the database. Also the program should present the user with a form of TextFields for capturing data to insert into a database (use the CPU database you created in previous projects). The form should also have a submit button which will attempt to create a new record in the database. The data should be validated first (numbers, text, blank, etc.). If the data is invalid nothing should be inserted into the database and a warning message should be presented to the user via a Label component. If a record is inserted into the database the List should be updated to include the new record. The report needs to be in the following format: Intel Core i7-6700HQ @ 2.60GHz: $1,509.00 Intel Core i7-3770K @ 3.50GHz: $560.50 Intel Core i5-3570K @ 3.40GHz: $477.23 Intel Core i7-4700MQ @ 2.40GHz: $467.40
SQL database: create database intelprocessors; use intelprocessors; show tables; create table computers(id int not null auto_increment primary key, cpuname varchar( 32 ) not null, performance varchar( 32 ) not null, price float); describe computers;
I need to get my code to read and from the SQL database and and then manipulate the database per the instructions above.
This is what I have so far:
//CPUTable.java
import javafx.application.*;
import javafx.beans.value.*;
import javafx.collections.*;
import javafx.geometry.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.*;
import java.util.Date;
import javafx.scene.control.cell.*;
import java.sql.Connection;
import java.sql.DriverManager;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import java.sql.*;
import java.util.*;
public class CPUTable extends Application{
private Label response;
private Label heading;
private TextField cpuField;
private TextField performanceField;
private TextField priceField;
private Button addBtn;
// The table graphic component
TableView< Computer > CPUTable;
public static void main( String[] args ){
launch( args );
}
public void start( Stage myStage ){
myStage.setTitle( "CPU Table" );
FlowPane rootNode = new FlowPane( 10, 10 );
rootNode.setAlignment( Pos.CENTER );
Scene myScene = new Scene( rootNode, 400, 400 );
myStage.setScene(myScene);
response = new Label( "" );
heading = new Label( "CPU Table" );
// The data structure that is under the table - it alerts the table when
// it is modified
ObservableList< Computer > ComputerList = FXCollections.observableArrayList(
new Computer( "TitleA", "111", "2016" ),
new Computer( "TitleB", "222", "2016" )
);
// The view that is connected to the list.
CPUTable = new TableView< Computer >( ComputerList );
// Sets up a column in the table.
// By using properties with field names that follow the convention
// we can easily connect a field from the datatype to a column in our
// table.
TableColumn< Computer, String > cpuCol = new TableColumn<>( "CPU name" );
cpuCol.setCellValueFactory( new PropertyValueFactory<>( "cpu name" ) );
CPUTable.getColumns().add( cpuCol );
TableColumn< Computer, String > performanceCol = new TableColumn<>( "Performance" );
performanceCol.setCellValueFactory( new PropertyValueFactory<>( "performance" ) );
CPUTable.getColumns().add( performanceCol );
TableColumn< Computer, String > priceCol = new TableColumn<>( "Price" );
priceCol.setCellValueFactory( new PropertyValueFactory<>( "price" ) );
CPUTable.getColumns().add( priceCol );
CPUTable.setPrefWidth( 400 );
CPUTable.setPrefHeight( 200 );
// The selection model is what we need to look at to connect listeners to
// to be able to handle acitons.
TableView.TableViewSelectionModel< Computer > ComputerSelectionModel = CPUTable.getSelectionModel();
ComputerSelectionModel.selectedIndexProperty().addListener(
new ChangeListener< Number >(){
public void changed( ObservableValue< ? extends Number > changed, Number oldValue, Number newValue){
Computer tempComputer = ComputerList.get( newValue.intValue() );
response.setText( "SelectedRow: " + newValue + ", with title: " + tempComputer.getCpu() );
}
}
);
cpuField = new TextField();
performanceField = new TextField();
priceField = new TextField();
addBtn = new Button( "Submit" );
addBtn.setOnAction(
new EventHandler< ActionEvent >(){
public void handle( ActionEvent ae ){
ComputerList.add(
new Computer(
cpuField.getText(),
performanceField.getText(),
priceField.getText()
)
);
cpuField.clear();
performanceField.clear();
priceField.clear();
}
}
);
rootNode.getChildren().addAll( heading, CPUTable, response, cpuField, performanceField, priceField, addBtn );
myStage.show();
}
}
-----------------------------------------------------------------------------------------------------------------------------
//Computer.java
import javafx.beans.property.*;
public class Computer{
private SimpleIntegerProperty id;
private SimpleStringProperty cpu;
private SimpleStringProperty performance;
private SimpleStringProperty price;
public Computer( String c, String s, String p ){
cpu = new SimpleStringProperty( c );
performance = new SimpleStringProperty( s );
price = new SimpleStringProperty( p );
}
public void setCpu( String c ){
cpu.set( c );
}
public String getCpu(){
return cpu.get();
}
public void setperformance( String s ){
performance.set( s );
}
public String getperformance(){
return performance.get();
}
public void setPrice( String p ){
price.set( p );
}
public String getPrice(){
return price.get();
}
}
------------------------------------------------------------------------------------------------------
//ComputerList.java
/*
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class ComputerList
{
ArrayList<Computer> theList = new ArrayList<>();
public void ComputerList()
{
}
public void AddComputer(String strInputLine)
{
theList.add(new Computer(strInputLine));
}
public void AddComputer(Computer tempComputer)
{
theList.add(tempComputer);
}
public String toString()
{
String strString = "";
for (Computer Computer : theList)
{
strString += Computer;
}
return(strString);
}
public void ShowReport()
{
for(Computer objComputer : theList)
{
System.out.printf("%s: %5.2f ", objComputer.getComputerName(), objComputer.getPrice());
}
}
public void CleanComputerList()
{
Iterator<Computer> it = theList.iterator();
while( it.hasNext() )
{
Computer objComputer = it.next();
if(objComputer.getValid() == false)
{
it.remove();
}
}
}
}
*/
Explanation / Answer
import javafx.application.*;
import javafx.beans.value.*;
import javafx.collections.*;
import javafx.geometry.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.*;
import java.util.Date;
import javafx.scene.control.cell.*;
import java.sql.Connection;
import java.sql.DriverManager;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import java.sql.*;
import java.util.*;
public category CPUTable extends Applicationpersonal Label response;
non-public Label heading;
non-public TextField cpuField;
non-public TextField performanceField;
non-public TextField priceField;
non-public Button addBtn;
// The table graphic part
TableView< pc > CPUTable;
public static void main( String[] args )
public void start( Stage myStage )modified( ObservableValue< ? extends variety > changed, variety oldValue, variety newValue){
pc tempComputer = ComputerList.get( newValue.intValue() );
response.setText( "SelectedRow: " + newValue + ", with title: " + tempComputer.getCpu() );
}
}
);
cpuField = new TextField();
performanceField = new TextField();
priceField = new TextField();
addBtn = new Button( "Submit" );
addBtn.setOnAction(
new EventHandler< ActionEvent >()
}
);
rootNode.getChildren().addAll( heading, CPUTable, response, cpuField, performanceField, priceField, addBtn );
myStage.show();
}
}
-----------------------------------------------------------------------------------------------------------------------------
//Computer.java
import javafx.beans.property.*;
public category Computerpersonal SimpleIntegerProperty id;
non-public SimpleStringProperty cpu;
non-public SimpleStringProperty performance;
non-public SimpleStringProperty price;
public Computer( String c, String s, String p )C.P.U. = new SimpleStringProperty( c );
performance = new SimpleStringProperty( s );
worth = new SimpleStringProperty( p );
}
public void setCpu( String c )
public String getCpu()
public void setperformance( String s )
public String getperformance()come performance.get();
}
public void setPrice( String p )
public String getPrice()come worth.get();
}
}
------------------------------------------------------------------------------------------------------
//ComputerList.java
/*
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public category ComputerList
public void AddComputer(String strInputLine)
public void AddComputer(Computer tempComputer)
public String toString()
{
String strString = "";
for (Computer pc : theList)
return(strString);
}
public void ShowReport()
}
}
}