javafx

源码 DialogAPP.zip

环境netbean   org.postgresql.Driver version 9

  1 /*
  2  * To change this license header, choose License Headers in Project Properties.
  3  * To change this template file, choose Tools | Templates
  4  * and open the template in the editor.
  5  */
  6 package dialogapp;
  7
  8
  9 import java.io.IOException;
 10 import java.util.Optional;
 11 import javafx.application.Application;
 12 import javafx.application.Platform;
 13 import javafx.event.ActionEvent;
 14 import javafx.event.EventHandler;
 15 import javafx.fxml.FXMLLoader;
 16 import javafx.geometry.Insets;
 17 import javafx.scene.Node;
 18 import javafx.scene.Scene;
 19 import javafx.scene.control.Button;
 20 import javafx.scene.control.ButtonBar.ButtonData;
 21 import javafx.scene.control.ButtonType;
 22 import javafx.scene.control.Dialog;
 23 import javafx.scene.control.Label;
 24 import javafx.scene.control.PasswordField;
 25 import javafx.scene.control.TableColumn;
 26 import javafx.scene.control.TextField;
 27 import javafx.scene.image.ImageView;
 28 import javafx.scene.layout.AnchorPane;
 29 import javafx.scene.layout.GridPane;
 30 import javafx.scene.layout.StackPane;
 31 import javafx.stage.Stage;
 32 import javafx.util.Pair;
 33
 34 /**
 35  *
 36  * @author
 37  */
 38 public class DialogAPP extends Application {
 39
 40     StackPane root;
 41    Scene scene;
 42
 43     @Override
 44     public void start(Stage primaryStage) throws IOException {
 45 //        Button btn = new Button();
 46 //        btn.setText("Say xxxxx‘");
 47 //        btn.setOnAction(new EventHandler<ActionEvent>() {
 48 //
 49 //            @Override
 50 //            public void handle(ActionEvent event) {
 51 //                System.out.println("Hello World!");
 52 //            }
 53 //        });
 54
 55          // root = new StackPane();
 56         //  root.getChildren().add(btn);
 57
 58 //        Alert alert = new Alert(AlertType.CONFIRMATION);
 59 //        alert.setTitle("Information Dialog");
 60 //        alert.setHeaderText("Look, an Information Dialog");
 61 //        alert.setContentText("I have a great message for you!");
 62 //
 63 //        //  alert.showAndWait();
 64 //        Optional<ButtonType> result = alert.showAndWait();
 65 //
 66 //        if (result.get() == ButtonType.OK) {
 67 //            System.out.print("ok");
 68 //        } else {
 69 //            System.out.print("cancel");
 70 //        }
 71 //
 72 //        TextInputDialog dialog = new TextInputDialog("walter");
 73 //        // Traditional way to get the response value.
 74 //        Optional<String> result1 = dialog.showAndWait();
 75 //        if (result1.isPresent()) {
 76 //            System.out.println("Your name: " + result1.get());
 77 //        }
 78 //        result1.ifPresent(name -> System.out.println("Your name: " + name));
 79
 80
 81
 82
 83 // List<String> choices = new ArrayList<>();
 84 //choices.add("a");
 85 //choices.add("b");
 86 //choices.add("c");
 87 //
 88 //ChoiceDialog<String> dialog2 = new ChoiceDialog<>("b", choices);
 89 // Optional<String> result2 = dialog2.showAndWait();
 90 //        if (result2.isPresent()) {
 91 //            System.out.println("Your choose: " + result2.get());
 92 //        }
 93 //        result2.ifPresent(name -> System.out.println("Your name: " + name));
 94
 95
 96
 97
 98
 99         //login
100         // Create the custom dialog.
101 //Dialog<Pair<String, String>> dialog = new Dialog<>();
102 //dialog.setTitle("Login Dialog");
103 //dialog.setHeaderText("Look, a Custom Login Dialog");
104 //
105 //// Set the icon (must be included in the project).
106 //dialog.setGraphic(new ImageView(this.getClass().getResource("login.png").toString()));
107 //
108 //// Set the button types.
109 //ButtonType loginButtonType = new ButtonType("Login", ButtonData.OK_DONE);
110 //dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);
111 //
112 //// Create the username and password labels and fields.
113 //GridPane grid = new GridPane();
114 //grid.setHgap(10);
115 //grid.setVgap(10);
116 //grid.setPadding(new Insets(20, 150, 10, 10));
117 //
118 //TextField username = new TextField();
119 //username.setPromptText("Username");
120 //PasswordField password = new PasswordField();
121 //password.setPromptText("Password");
122 //
123 //grid.add(new Label("Username:"), 0, 0);
124 //grid.add(username, 1, 0);
125 //grid.add(new Label("Password:"), 0, 1);
126 //grid.add(password, 1, 1);
127 //
128 //// Enable/Disable login button depending on whether a username was entered.
129 //Node loginButton = dialog.getDialogPane().lookupButton(loginButtonType);
130 //loginButton.setDisable(true);
131 //
132 //// Do some validation (using the Java 8 lambda syntax).
133 //username.textProperty().addListener((observable, oldValue, newValue) -> {
134 //    loginButton.setDisable(newValue.trim().isEmpty());
135 //});
136 //
137 //dialog.getDialogPane().setContent(grid);
138 //
139 //// Request focus on the username field by default.
140 //Platform.runLater(() -> username.requestFocus());
141 //
142 //// Convert the result to a username-password-pair when the login button is clicked.
143 //dialog.setResultConverter(dialogButton -> {
144 //    if (dialogButton == loginButtonType) {
145 //        return new Pair<>(username.getText(), password.getText());
146 //    }
147 //    return null;
148 //});
149 //
150 //
151 //
152 //Optional<Pair<String, String>> result = dialog.showAndWait();
153 //
154 //result.ifPresent(usernamePassword -> {
155 //    System.out.println("Username=" + usernamePassword.getKey() + ", Password=" + usernamePassword.getValue());
156 //});
157
158
159
160
161         loadDialogShowView(primaryStage);
162
163     }
164
165
166     public void loadDialogShowView(Stage primaryStage) throws IOException{
167         FXMLLoader loader=new FXMLLoader();
168         loader.setLocation(DialogAPP.class.getResource("/dialogapp/DialogShowFXML.fxml"));
169         AnchorPane ap=(AnchorPane)loader.load();
170
171         DialogShowFXMLController ds=loader.getController();
172         ds.ShowOBJ();
173         scene = new Scene(ap);
174
175         // 给 row 添加样式
176         scene.getStylesheets().addAll(DialogAPP.class.getResource("/dialogapp/rowstyle.css").toExternalForm());
177         primaryStage.setScene(scene);
178         primaryStage.show();
179
180     }
181     /**
182      * @param args the command line arguments
183      */
184     public static void main(String[] args) {
185         launch(args);
186     }
187
188 }
  1 /*
  2  * To change this license header, choose License Headers in Project Properties.
  3  * To change this template file, choose Tools | Templates
  4  * and open the template in the editor.
  5  */
  6 package dialogapp;
  7
  8 import java.net.URL;
  9 import java.sql.SQLException;
 10 import java.util.List;
 11 import java.util.ResourceBundle;
 12 import java.util.logging.Level;
 13 import java.util.logging.Logger;
 14 import javafx.beans.property.SimpleStringProperty;
 15
 16 import javafx.beans.property.StringProperty;
 17 import javafx.collections.FXCollections;
 18 import javafx.collections.ObservableList;
 19
 20 import javafx.fxml.FXML;
 21 import javafx.fxml.Initializable;
 22 import javafx.scene.control.TableCell;
 23 import javafx.scene.control.TableColumn;
 24 import javafx.scene.control.TableColumn.CellEditEvent;
 25 import javafx.scene.control.TableView;
 26 import javafx.scene.paint.Color;
 27 import javafx.util.Callback;
 28
 29 /**
 30  * FXML Controller class
 31  *
 32  * @author
 33  */
 34 public class DialogShowFXMLController implements Initializable {
 35
 36     @FXML
 37     private TableView<ShowObject> ObjectTable;
 38     //TableColumn<Person, String>
 39     @FXML
 40     public TableColumn<ShowObject, String> firstOBJ;
 41
 42     @FXML
 43     public TableColumn<ShowObject, String> secondOBJ;
 44
 45     /**
 46      * Initializes the controller class.
 47      */
 48     @FXML
 49     public void initialize(URL url, ResourceBundle rb) {
 50
 51
 52         ObjectTable.setEditable(true);
 53         firstOBJ.setCellValueFactory(cellData -> cellData.getValue().firstOBJProperty());
 54         secondOBJ.setCellValueFactory(cellData -> cellData.getValue().secondOBJProperty());
 55
 56         // fix or change item s
 57         secondOBJ.setCellFactory(new Callback<TableColumn<ShowObject, String>, TableCell<ShowObject, String>>() {
 58
 59             @Override
 60             public TableCell<ShowObject, String> call(TableColumn<ShowObject, String> param) {
 61
 62                 return new TableCell<ShowObject, String>() {
 63
 64                     @Override
 65                     protected void updateItem(String item, boolean empty) {
 66
 67                               //  super.updateItem(item, empty);
 68                         if (!empty) {
 69
 70                             //  if(item.contains("shoe")) {
 71                             if (item.equals("shoe")) {
 72                                 this.setTextFill(Color.BLUEVIOLET);
 73                             } else {
 74                                 setTextFill(Color.BLACK);
 75                             }
 76                             setText(item);
 77                             //System.out.println("----------"+getText()+"-------"+item+"-----------"+isEmpty());
 78
 79                         } else {
 80                             setText(null);
 81                         }
 82                     }
 83
 84                 };
 85             }
 86         });
 87
 88
 89         secondOBJ.setOnEditCommit(
 90                 (CellEditEvent<ShowObject, String> t) -> {
 91                     ((ShowObject) t.getTableView().getItems().get(t.getTablePosition().getRow())).setSecondOBJ(t.getNewValue());
 92
 93                 });
 94
 95
 96 //        columnValue.setCellFactory(cellFactory);
 97 //      columnValue.setOnEditCommit(
 98 //              new EventHandler<TableColumn.CellEditEvent<Record, Double>>() {
 99 //                  @Override public void handle(TableColumn.CellEditEvent<Record, Double> t) {
100 //                      ((Record)t.getTableView().getItems().get(
101 //                              t.getTablePosition().getRow())).setFieldValue(t.getNewValue());
102 //                  }
103 //              });
104
105     }
106     private ObservableList<ShowObject> objectData = FXCollections.observableArrayList();
107
108     private void setobjectData() {
109
110 //        objectData.add(new ShowObject("hands", "glove"));
111 //        objectData.add(new ShowObject("foot", "shoe"));
112 //        objectData.add(new ShowObject("head", "hat"));
113 //        objectData.add(new ShowObject("leg", "trouse"));
114 //        objectData.add(new ShowObject("body", "clothes"));
115 //        objectData.add(new ShowObject("", ""));
116 //        objectData.add(new ShowObject("", ""));
117 //        objectData.add(new ShowObject("", ""));
118
119          DBhelp dbh=new DBhelp();
120          String sql="select * from tbl_test_object";
121           try {
122               List<ShowObject> l= dbh.selectRun(sql);
123               objectData=FXCollections.observableArrayList(l);
124
125 //              for(ShowObject so:l){
126 //              System.out.println(so.getFirstOBJ()+"  ///// "+so.getSecondOBJ());
127 //              }
128           } catch (ClassNotFoundException ex) {
129               Logger.getLogger(DBhelp.class.getName()).log(Level.SEVERE, null, ex);
130           } catch (SQLException ex) {
131               Logger.getLogger(DBhelp.class.getName()).log(Level.SEVERE, null, ex);
132           }
133     }
134
135     public void ShowOBJ() {
136         setobjectData();
137         ObjectTable.setItems(objectData);
138     }
139
140     public class ShowObject {
141
142         private final StringProperty firstOBJ;
143         private final StringProperty secondOBJ;
144
145         public ShowObject(String S1, String S2) {
146
147             this.firstOBJ = new SimpleStringProperty(S1);
148             this.secondOBJ = new SimpleStringProperty(S2);
149         }
150
151         public StringProperty firstOBJProperty() {
152             return firstOBJ;
153         }
154
155         public StringProperty secondOBJProperty() {
156             return secondOBJ;
157         }
158
159         public String getFirstOBJ() {
160             return firstOBJ.get();
161         }
162
163 //        public void setFirstOBJ(String firstOBJ) {
164 //            this.firstOBJ.set(firstOBJ);
165 //        }
166
167         public String getSecondOBJ() {
168             return secondOBJ.get();
169         }
170
171         public void setSecondOBJ(String secondOBJ) {
172             this.secondOBJ.set(secondOBJ);
173         }
174
175     }
176
177 }
 1 /*
 2  * To change this license header, choose License Headers in Project Properties.
 3  * To change this template file, choose Tools | Templates
 4  * and open the template in the editor.
 5  */
 6 package dialogapp;
 7
 8 import dialogapp.DialogShowFXMLController.ShowObject;
 9 import java.sql.Connection;
10 import java.sql.DriverManager;
11 import java.sql.ResultSet;
12 import java.sql.SQLException;
13 import java.sql.Statement;
14 import java.util.ArrayList;
15 import java.util.List;
16 import java.util.logging.Level;
17 import java.util.logging.Logger;
18
19
20
21
22 /**
23  *
24  * @author
25  */
26
27
28  public class DBhelp {
29
30 //    //table script
31 //    CREATE TABLE "public"."tbl_test_object" (
32 //"firstOBJ" varchar(10),
33 //"secondOBJ" varchar(10)
34 //);
35
36
37
38
39       public List<ShowObject> selectRun(String sql) throws ClassNotFoundException, SQLException{
40           List<ShowObject> l=new ArrayList();
41           String connStr="jdbc:postgresql://spec2.dunham-bush.com:5433/spec7";
42           DialogShowFXMLController dbase=new DialogShowFXMLController();
43           ShowObject so=dbase.new ShowObject("","");
44
45           Class.forName("org.postgresql.Driver");
46           Connection con= DriverManager.getConnection(connStr,"ecatalog","yeA");
47
48           Statement st=con.createStatement();
49           st.execute(sql);
50           ResultSet rs=st.getResultSet();
51
52
53           while(rs.next()){
54             String  firstOBJ=rs.getString("firstOBJ");
55             String  secondOBJ= rs.getString("secondOBJ");
56               l.add(dbase.new ShowObject(firstOBJ,secondOBJ));
57
58           }
59
60           return  l;
61       }
62     public static void main(String args[]) {
63
64     DBhelp dbh=new DBhelp();
65     String sql="select * from tbl_test_object";
66           try {
67               List<ShowObject> l= dbh.selectRun(sql);
68               for(ShowObject so:l){
69               System.out.println(so.getFirstOBJ()+"  ///// "+so.getSecondOBJ());
70               }
71
72
73           } catch (ClassNotFoundException ex) {
74               Logger.getLogger(DBhelp.class.getName()).log(Level.SEVERE, null, ex);
75           } catch (SQLException ex) {
76               Logger.getLogger(DBhelp.class.getName()).log(Level.SEVERE, null, ex);
77           }
78
79
80     }
81 }

DialogShowFXML.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2
 3 <?import java.lang.*?>
 4 <?import java.util.*?>
 5 <?import javafx.scene.*?>
 6 <?import javafx.scene.control.*?>
 7 <?import javafx.scene.layout.*?>
 8
 9 <AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="dialogapp.DialogShowFXMLController">
10    <children>
11       <TableView fx:id="ObjectTable" layoutX="194.0" layoutY="100.0" prefHeight="200.0" prefWidth="200.0">
12         <columns>
13           <TableColumn fx:id="firstOBJ" prefWidth="98.0" text="S1" />
14           <TableColumn fx:id="secondOBJ" minWidth="8.0" prefWidth="101.0" text="S2" />
15         </columns>
16       </TableView>
17    </children>
18 </AnchorPane>

rowstyle.css

 1 /*
 2 To change this license header, choose License Headers in Project Properties.
 3 To change this template file, choose Tools | Templates
 4 and open the template in the editor.
 5 */
 6 /*
 7     Created on : Aug 5, 2015, 10:55:39 AM
 8     Author     :
 9 */
10
11 .table-row-cell:empty {
12     -fx-background-color: white;
13 }
14
15 .table-row-cell:empty .table-cell {
16     -fx-border-width: 0px;
17 }
时间: 2024-10-18 08:04:12

javafx的相关文章

IntelliJ IDEA创建JavaFX项目

点击File>New>Project,选中Java FX,Next,填写项目名称和路径,Finish 项目创建成功,目录如下,src下为项目源码,out目录下为编译结果. Main为项目主入口,sample.fxml为资源文件,可以看到main方法选择从sample.fxml加载窗口元素. Main.java和sample.fxml初始代码 public class Main extends Application { @Override public void start(Stage pri

Using JavaFX UI Controls 12 Table View

原文链接地址:http://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJAGAAEE 在这一章,你将学习如:添加一个表格表.数据填充.编辑表格行等格组件 JavaFx的基本操作. 很多JavaFX SDK API种的类为在表格表单中呈现数据.在JavaFX 应用中对创建表格最重要的是TableView, TableColumn和TableCell这三个类. 你可以通过实现数据模型(data model) 和 实现  单元格工厂(ce

JavaFX上手--第1天

1.第一个JavaFX Application JavaFX 使用Java来制作可视化图形,可以做动画和3D效果,JavaFX从JDK中直接使用. package application; import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; public class Main exten

JavaFX Scene Builder 使用基础(一)

怎么用Scene Builder 来配合编写一个程序?下面我们就以此来讨论一下. (一)基础准备工作 本人使用NetBeans与JavaFX Scene Builder协同编写. 对于NetBeans我们需要做的是如下步骤:文件-->新建项目-->JavaFX-->JavaFX FXML应用程序,然后单击下一步,如图: 建立好工程文件后,我们可以看到工程下有三个文件,一个.FXML文件,两个.java文件,如图: 其中FXMLDocument.fxml为用户界面,我们可以通过JavaFX

JavaFX(二)自定义窗口标题栏

问题场景: PC客户端登录界面仿QQ,上边显示图片,下边显示输入框和登录按钮.而JavaFX默认的窗口,不满足需求. 思路: 隐藏窗口默认的标题栏,使用创建label对象,使用css将按钮图片替换到label对象中进行布局,充当按钮. 实现: 代码片段: stage.initStyle(StageStyle.TRANSPARENT);//隐藏默认标题栏 代码片段: Label close = new Label(); close.setTooltip(new Tooltip("关闭")

JavaFX Application应用实例

下面代码演示的是JavaFX进程命令行参数的实例.大家可以参阅一下. /*原文地址:http://www.manongjc.com/article/134.html */ import java.util.List; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.sce

Using JavaFX UI Controls 18 超链接

原网页地址:http://docs.oracle.com/javafx/2/ui_controls/hyperlink.htm#CIHGADBG 这一章讲述用来将文本转换为超链接的 Hyperlink 组件 Hyperlink 类 是 Labeled 类的另一种形式. 图18-1 展示了默认超链接实现的3中状态 图 18-1 超链接组件的3中状态 创建一个超链接 例 18-1 中展示创建超链接的代码片段 <em>例18-1 典型的超链接 </em>Hyperlink link =

JavaFX战旗类游戏开发 第六课 移动范围的获取

有一段时间没有写这个战旗游戏Demo的教程了.现在来继续. 战旗类游戏的范围获取其实并不复杂,主要是节点的遍历和权值的比较. 大家知道,在A*Star最短寻径算法里,权值是有个G值和H值的,G值是起点到当前点的移动量(通常相邻两格移动量在1),H值是当前点到目标点的移动量估算值. 当然,对于SLG游戏中寻找移动范围,并没有这么复杂,我们在这里只需一个G值,用于表示移动量. 主要算法原理: 1.有两个List----OpenList,CloseList. 2.将要移动的角色位置,添加到OpenLi

JavaFX学习之道:JavaFX之TableView

TableView表 TableColumn列 构建一个表主要有TableView,TableColumn,ObservableList,Bean. 添加列table.getColumns().addAll(firstNameCol, lastNameCol, emailCol); ObservableList里面是存放的数据 table.setItems(observableList);添加数据 observableList里面一般是存放的Bean,列与Bean之间建立联系,从而获取值. 列与

JavaFX - UI控件 - 标签

  2标签(Label) 本章主要介绍如何使用标签(Label),该类位于JavaFX API的javafx.scene.control包中,用于显示一个文本元素. 接下来会介绍如何让文本元素自动换行来适应受限空间,添加一个图标,或使用视觉特效. 图2 - 1显示了标签的三种常见用法. 左边的标签是一个带图标的文本,中间的展示了旋转效果,右边的使用了自动换行设置. 图2 - 1 标签示例 这幅图显示了三个标签,他们被放在了同一行. 左边的标签有一个看起来像个放大镜的图标和一个"Searc