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 }

 

posted on 2015-08-06 11:25  rojas  阅读(479)  评论(0编辑  收藏  举报