import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import java.net.URL;
import java.sql.*;
import java.util.List;
import java.util.ResourceBundle;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Connection conn=connectMySql();
ObservableList<person> list= FXCollections.observableArrayList();
TableView tableView=new TableView<>();
tableView.setItems(list);
initialize(conn,list);
HBox firstLine=new HBox();
firstLine.setSpacing(10);
Label 首页标题标签=new Label("标题:");
TextField 首页标题=new TextField();
Label 分别标签=new Label("分别:");
TextField 分别=new TextField();
Button 查找=new Button("查找");
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
查找.setOnAction(event -> {
List<person> newlist=FXCollections.observableArrayList();
tableView.getSelectionModel().clearSelection();
boolean direct=false;
for(int i=0;i<list.size();i++)
{
System.out.println(0);
if(list.get(i).get标题().equals(首页标题.getText())&&list.get(i).get分类().equals(分别.getText()))
{
tableView.getSelectionModel().select(i);
direct=true;
newlist.add(list.get(i));
}
}
if(!direct)
{
System.out.println(首页标题.getText()+" "+分别.getText());
if(分别.getLength()>0&&首页标题.getLength()>0)
{
System.out.println(1);
for(int i=0;i<list.size();i++)
{
if (list.get(i).get标题().contains(首页标题.getText()) || list.get(i).get分类().equals(分别.getText()))
{
tableView.getSelectionModel().select(i);
newlist.add(list.get(i));
}
}
}
else if(分别.getLength()>0)
{
System.out.println(2);
for(int i=0;i<list.size();i++)
{
if (list.get(i).get分类().contains(分别.getText()))
{
tableView.getSelectionModel().select(i);
System.out.println("!"+分别.getText()+" "+list.get(i).get分类());
newlist.add(list.get(i));
}
}
}
else if(首页标题.getLength()>0)
{
System.out.println(3);
for(int i=0;i<list.size();i++)
{
if (list.get(i).get标题().contains(首页标题.getText()))
{
tableView.getSelectionModel().select(i);
newlist.add(list.get(i));
}
}
}
}
list.clear();
for(int i=0;i<newlist.size();i++)
{
list.add(newlist.get(i));
}
});
Button 重置签到状态=new Button("重置签到状态");
重置签到状态.setOnAction(event -> {
String Sql="UPDATE Book SET `已完成`=''";
Statement statement= null;
try {
statement = conn.createStatement();
statement.execute(Sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
for(int i=0;i<list.size();i++)list.get(i).set已完成("");
});
Button 清除查找=new Button("清除查找");
清除查找.setOnAction(event -> {
String Sql="select * from Book";
PreparedStatement psmt= null;
list.clear();
try {
psmt = conn.prepareStatement(Sql);
ResultSet rs=psmt.executeQuery();
while(rs.next())
{
list.add(new person(rs.getString("标题"),rs.getString("内容"),rs.getString("开始时间"),rs.getString("截止时间"),rs.getString("分类"),rs.getString("重要程度"),rs.getString("已完成")));
}
rs.close();
psmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
});
firstLine.getChildren().addAll(首页标题标签,首页标题,分别标签,分别,查找,重置签到状态,清除查找);
HBox secondLine=new HBox();
Button 新增=new Button("新增");
新增.setOnAction(event -> {
VBox vBox=new VBox();
HBox 标题列=new HBox();
Label 标题标签=new Label("标题:");
TextField 标题=new TextField();
标题列.getChildren().addAll(标题标签,标题);
HBox 内容列=new HBox();
Label 内容标签=new Label("内容:");
TextField 内容=new TextField();
内容列.getChildren().addAll(内容标签,内容);
HBox 开始列=new HBox();
Label 开始标签=new Label("开始时间;");
TextField 开始时间=new TextField();
开始列.getChildren().addAll(开始标签,开始时间);
HBox 截至列=new HBox();
Label 截至标签=new Label("截至时间:");
TextField 截止时间=new TextField();
截至列.getChildren().addAll(截至标签,截止时间);
HBox 分类列=new HBox();
Label 分类标签=new Label("分类:");
TextField 分类=new TextField();
分类列.getChildren().addAll(分类标签,分类);
HBox 重要程度列=new HBox();
Label 重要程度标签=new Label("重要程度:");
TextField 重要程度=new TextField();
重要程度列.getChildren().addAll(重要程度标签,重要程度);
ToggleGroup toggleGroup=new ToggleGroup();
Label 是否完成=new Label("是否完成");
Label 是的标签=new Label("已完成");
RadioButton 是=new RadioButton();
是.setToggleGroup(toggleGroup);
Label 不是的标签=new Label("未完成");
RadioButton 否=new RadioButton();
否.setToggleGroup(toggleGroup);
HBox 是单元=new HBox();
是单元.getChildren().addAll(是的标签,是);
HBox 否单元=new HBox();
否单元.getChildren().addAll(不是的标签,否);
HBox 选择单元=new HBox();
选择单元.setSpacing(10);
选择单元.getChildren().addAll(是否完成,是单元,否单元);
HBox 是否结束=new HBox();
Button 完成=new Button("完成");
是否结束.getChildren().addAll(完成);
vBox.getChildren().addAll(标题列,内容列,开始列,截至列,分类列,重要程度列,选择单元,是否结束);
vBox.setAlignment(Pos.CENTER);
BorderPane borderPane=new BorderPane();
borderPane.setCenter(vBox);
borderPane.setPadding(new Insets(20));
Scene scene=new Scene(borderPane);
Stage stage=new Stage();
stage.setScene(scene);
stage.show();
stage.setTitle("新增");
完成.setOnAction(event1 -> {
String 是否完成转化="";
if(是.isSelected())是否完成转化="已完成";
else 是否完成转化="未完成";
try {
addMySql(标题.getText(),内容.getText(),开始时间.getText(),截止时间.getText(),分类.getText(),重要程度.getText(),是否完成转化,list,conn);
} catch (Exception e) {
e.printStackTrace();
}
stage.close();
});
});
Button 修改=new Button("修改");
修改.setOnAction(event -> {
String 原来的col="";
int index1=tableView.getSelectionModel().getFocusedIndex();
VBox vBox=new VBox();
HBox 标题列=new HBox();
Label 标题标签=new Label("标题: ");
TextField 标题=new TextField();
标题.setText(list.get(index1).get标题());
标题列.getChildren().addAll(标题标签,标题);
HBox 内容列=new HBox();
Label 内容标签=new Label("内容: ");
TextField 内容=new TextField();
内容.setText(list.get(index1).get内容());
内容列.getChildren().addAll(内容标签,内容);
HBox 开始列=new HBox();
Label 开始标签=new Label("开始时间:");
TextField 开始时间=new TextField();
开始时间.setText(list.get(index1).get开始());
开始列.getChildren().addAll(开始标签,开始时间);
HBox 截至列=new HBox();
Label 截至标签=new Label("截至时间:");
TextField 截止时间=new TextField();
截止时间.setText(list.get(index1).get结束());
截至列.getChildren().addAll(截至标签,截止时间);
HBox 分类列=new HBox();
Label 分类标签=new Label("分类: ");
TextField 分类=new TextField();
分类.setText(list.get(index1).get分类());
分类列.getChildren().addAll(分类标签,分类);
HBox 重要程度列=new HBox();
Label 重要程度标签=new Label("重要程度:");
TextField 重要程度=new TextField();
重要程度.setText(list.get(index1).get重要());
重要程度列.getChildren().addAll(重要程度标签,重要程度);
ToggleGroup toggleGroup=new ToggleGroup();
Label 是否完成=new Label("是否完成:");
Label 是的标签=new Label("已完成");
RadioButton 是=new RadioButton();
是.setToggleGroup(toggleGroup);
Label 不是的标签=new Label("未完成");
RadioButton 否=new RadioButton();
否.setToggleGroup(toggleGroup);
if(list.get(index1).get已完成().equals("已完成"))
{
是.setSelected(true);
}
else
{
否.setSelected(true);;
}
HBox 是单元=new HBox();
是单元.getChildren().addAll(是的标签,是);
HBox 否单元=new HBox();
否单元.getChildren().addAll(不是的标签,否);
HBox 选择单元=new HBox();
选择单元.setSpacing(10);
选择单元.getChildren().addAll(是否完成,是单元,否单元);
HBox 是否结束=new HBox();
Button 完成=new Button("完成");
是否结束.getChildren().addAll(完成);
vBox.getChildren().addAll(标题列,内容列,开始列,截至列,分类列,重要程度列,选择单元,是否结束);
vBox.setAlignment(Pos.CENTER);
BorderPane borderPane=new BorderPane();
borderPane.setCenter(vBox);
borderPane.setPadding(new Insets(20));
Scene scene=new Scene(borderPane);
Stage stage=new Stage();
stage.setScene(scene);
stage.setTitle("修改");
stage.show();
完成.setOnAction(event1 -> {
String 是否完成转化="";
if(是.isSelected())是否完成转化="已完成";
else 是否完成转化="未完成";
int index=tableView.getSelectionModel().getFocusedIndex();
String title=list.get(index).get标题();
String include=list.get(index).get分类();
String Sql="UPDATE Book ";
String set="SET`标题`="+"'"+标题.getText()+"'"+",`内容`="+"'"+内容.getText()+"'"+",`开始时间`="+"'"+开始时间.getText()+"'"+",`截止时间`="+"'"+截止时间.getText()+"'"+",`分类`="+"'"+分类.getText()+"'"+",`重要程度`="+"'"+重要程度.getText()+"'"+",`已完成`="+"'"+是否完成转化+"'\n";
String find="WHERE "+"`标题`="+"'"+title+"'"+"AND `分类`="+"'"+include+"'";
Sql+=set;
Sql+=find;
System.out.println(Sql);
Statement statement= null;
try {
statement = conn.createStatement();
statement.execute(Sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
list.get(index).set已完成(是否完成转化);
list.get(index).set标题(标题.getText());
list.get(index).set内容(内容.getText());
list.get(index).set开始(开始时间.getText());
list.get(index).set结束(截止时间.getText());
list.get(index).set分类(分类.getText());
list.get(index).set重要(重要程度.getText());
stage.close();
});
});
Button 删除=new Button("删除");
删除.setOnAction(event -> {
int index=tableView.getSelectionModel().getFocusedIndex();
String title=list.get(index).get标题();
String include=list.get(index).get内容();
String Sql="DELETE FROM Book WHERE "+"标题="+"'"+title+"'";
try {
Statement statement=conn.createStatement();
statement.execute(Sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
list.remove(index);
});
Button 标记为完成=new Button("标记为完成");
标记为完成.setOnAction(event -> {
int index=tableView.getSelectionModel().getFocusedIndex();
String title=list.get(index).get标题();
String include=list.get(index).get内容();
String Sql="UPDATE Book SET `已完成`='已完成' WHERE `标题`="+"'"+title+"'"+"AND"+"`内容`="+"'"+include+"'";
System.out.println(Sql);
list.get(index).set已完成("已完成");
try {
Statement statement=conn.createStatement();
statement.execute(Sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
});
Button 标记为待办=new Button("标记为待办");
标记为待办.setOnAction(event -> {
int index=tableView.getSelectionModel().getFocusedIndex();
String title=list.get(index).get标题();
String include=list.get(index).get内容();
String Sql="UPDATE Book SET `已完成`='未完成' WHERE `标题`="+"'"+title+"'"+"AND"+"`内容`="+"'"+include+"'";
System.out.println(Sql);
list.get(index).set已完成("未完成");
try {
Statement statement=conn.createStatement();
statement.execute(Sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
});
secondLine.getChildren().addAll(新增,修改,删除,标记为完成,标记为待办);
secondLine.setSpacing(30);
HBox thirdLine=new HBox();
TableColumn<person,String> 标题=new TableColumn<>("标题");
标题.setCellValueFactory(cellData->cellData.getValue().标题Property());
TableColumn<person,String> 分类=new TableColumn<>("分类");
分类.setCellValueFactory(cellData->cellData.getValue().分类Property());
TableColumn<person,String> 重要=new TableColumn<>("重要");
重要.setCellValueFactory(cellData->cellData.getValue().重要Property());
TableColumn<person,String> 开始=new TableColumn<>("开始");
开始.setCellValueFactory(cellData->cellData.getValue().开始Property());
TableColumn<person,String> 结束=new TableColumn<>("结束");
结束.setCellValueFactory(cellData->cellData.getValue().结束Property());
TableColumn<person,String> 已完成=new TableColumn<>("已完成");
已完成.setCellValueFactory(cellData->cellData.getValue().已完成Property());
TableColumn<person,String> 内容=new TableColumn<>("内容");
内容.setPrefWidth(200);
内容.setCellValueFactory(cellData->cellData.getValue().内容Property());
tableView.getColumns().addAll(标题,分类,重要,开始,结束,已完成,内容);
TextField 版权 = new TextField("版权所有? 内蒙古农业大学 王泽斌");
版权.setEditable(false);
版权.setAlignment(Pos.CENTER);
VBox pane=new VBox(firstLine,secondLine,thirdLine,tableView,版权);
BorderPane borderPane=new BorderPane();
borderPane.setCenter(pane);
pane.setSpacing(5);
borderPane.setPadding(new Insets(20));
Scene scene=new Scene(borderPane,800,500);
primaryStage.setTitle("内蒙古农业大学X待办事项");
primaryStage.setScene(scene);
borderPane.setStyle("-fx-border-width:2px;-fx-border-color:black");
primaryStage.setResizable(false);
primaryStage.show();
}
public Connection connectMySql() throws Exception
{
String username="root";
String password="";
String connectionUrl = "jdbc:mysql://bj-cynosdbmysql-grp-你的SQL地址/Library?useUnicode=true&characterEncoding=UTF-8";
Connection conn= DriverManager.getConnection(connectionUrl,username,password);
return conn;
}
public void addMySql(String 标题,String 内容,String 开始时间,String 截止时间,String 分类,String 重要程度,String 已完成,ObservableList<person> list,Connection conn) throws Exception
{
list.add(new person(标题,内容,开始时间,截止时间,分类,重要程度,已完成));
String Value="VALUES ('"+标题+"', '"+内容+"','"+内容+"','"+截止时间+"','"+分类+"','"+重要程度+"','"+已完成+"') ";
String Sql="INSERT INTO Book(`标题`, `内容`, `开始时间`, `截止时间`, `分类`, `重要程度`, `已完成`)"+Value;
Statement statement=conn.createStatement();
statement.execute(Sql,Statement.RETURN_GENERATED_KEYS);
}
public static void main(String[] args) {
launch();
}
public void initialize(Connection conn,ObservableList<person> list) throws Exception
{
String Sql="select * from Book";
PreparedStatement psmt=conn.prepareStatement(Sql);
ResultSet rs=psmt.executeQuery();
while(rs.next())
{
list.add(new person(rs.getString("标题"),rs.getString("内容"),rs.getString("开始时间"),rs.getString("截止时间"),rs.getString("分类"),rs.getString("重要程度"),rs.getString("已完成")));
}
rs.close();
psmt.close();
}
}
class person{
SimpleStringProperty 标题=new SimpleStringProperty();
SimpleStringProperty 分类=new SimpleStringProperty();
SimpleStringProperty 重要=new SimpleStringProperty();
SimpleStringProperty 开始=new SimpleStringProperty();
SimpleStringProperty 结束=new SimpleStringProperty();
SimpleStringProperty 已完成=new SimpleStringProperty();
SimpleStringProperty 内容=new SimpleStringProperty();
public person(String 标题,String 内容,String 开始时间,String 截止时间,String 分类,String 重要程度,String 已完成)
{
set标题(标题);
set分类(分类);
set开始(开始时间);
set结束(截止时间);
set分类(分类);
set重要(重要程度);
set已完成(已完成);
set内容(内容);
}
public SimpleStringProperty 标题Property() {
return 标题;
}
public SimpleStringProperty 分类Property() {
return 分类;
}
public SimpleStringProperty 重要Property() {
return 重要;
}
public SimpleStringProperty 开始Property() {
return 开始;
}
public SimpleStringProperty 结束Property() {
return 结束;
}
public SimpleStringProperty 已完成Property() {
return 已完成;
}
public SimpleStringProperty 内容Property() {
return 内容;
}
public void set标题(String 标题) {
this.标题.set(标题);
}
public void set分类(String 分类) {
this.分类.set(分类);
}
public void set重要(String 重要) {
this.重要.set(重要);
}
public void set开始(String 开始) {
this.开始.set(开始);
}
public void set结束(String 结束) {
this.结束.set(结束);
}
public void set已完成(String 已完成) {
this.已完成.set(已完成);
}
public void set内容(String 内容) {
this.内容.set(内容);
}
public String get标题() {
return 标题.get();
}
public String get分类() {
return 分类.get();
}
public String get重要() {
return 重要.get();
}
public String get开始() {
return 开始.get();
}
public String get结束() {
return 结束.get();
}
public String get已完成() {
return 已完成.get();
}
public String get内容() {
return 内容.get();
}
}
|