· 6 years ago · Jun 21, 2019, 12:12 PM
1public Connection conn;
2
3TableColumn tc = null;
4TableView <ObservableList> table = new TableView<>();
5
6ObservableList items;
7
8public Connection dbcon() {
9
10 try {
11
12 String url ="jdbc:mysql://localhost:3306/"; //koma //emerald
13
14 conn = DriverManager.getConnection(url, "root", "walgotech");
15 String createdb = "CREATE DATABASE IF NOT EXISTS `school`";
16 PreparedStatement pst = conn.prepareStatement(createdb);
17 pst.execute();
18 Statement stt = conn.createStatement();
19 stt.execute("use school");
20 } catch (Exception e) {
21 e.printStackTrace();
22 }
23
24 return conn;
25
26}
27
28public void start(Stage primaryStage) {
29 StackPane root = new StackPane();
30 table.setEditable(true);
31
32 try{
33 items = FXCollections.observableArrayList();
34 items.clear();
35
36 dbcon();
37
38 List<String> sql1 = new ArrayList<String>();
39
40 ResultSet mk111 = conn.prepareStatement("SELECT * FROM `subjects1` ORDER BY `ORDER` ASC").executeQuery();;
41 while(mk111.next()){
42
43 sql1.add("`"+mk111.getString("code")+"`");
44
45 }
46 String formattedString1 = sql1.toString()
47 .replace("[", "")
48 .replace("]", "")
49 .trim();
50
51 ResultSet rs =conn.prepareStatement("SELECT `form4 term1 mid-term exam 2019`."
52 + "admno,CONCAT(`FIRST NAME`,' ',`SECOND NAME`)"
53 + " AS Studentname,"+formattedString1+""
54 + ",`form4 term1 mid-term exam 2019`.Total FROM `form4 term1 mid-term exam 2019` "
55 + "INNER JOIN registration on `form4 term1 mid-term exam 2019`."
56 + "admno=registration.`ADM NO` GROUP BY `form4 term1 mid-term exam 2019`.admno ").executeQuery();
57
58
59
60 for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
61
62 final int j = i;
63
64 tc = new TableColumn <>(rs.getMetaData().getColumnName(i+1));
65
66 tc.setEditable(true);
67
68
69
70 tc.setCellFactory(column -> new EditCell1(null));
71
72 tc.setPrefWidth(90);
73
74
75 tc.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
76 public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
77 return new SimpleStringProperty(param.getValue().get(j).toString());
78 }
79 });
80 table.getColumns().addAll(tc);
81 }
82
83
84 while(rs.next()){
85
86 ObservableList<String> row = FXCollections.observableArrayList();
87 for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
88
89 row.add(rs.getString(i));
90
91 }
92 items.add(row);
93
94 }
95 table.setItems(items);
96
97
98
99 table.setOnKeyPressed(event -> {
100 TablePosition<ObservableList, ?> pos = table.getFocusModel().getFocusedCell() ;
101 if (pos != null) {
102 table.edit(pos.getRow(), pos.getTableColumn());
103 }
104 });
105
106
107
108 root.getChildren().add(table);
109 primaryStage.setScene(new Scene(root, 300, 250));
110 primaryStage.show();
111
112} catch (Exception e1) {
113 e1.printStackTrace();
114 }
115}
116
117private class EditCell1 extends TableCell<ObservableList, String> {
118
119 private final TextField textField = new TextField();
120 private final Function<ObservableList, StringProperty> property ;
121
122 @SuppressWarnings("unchecked")
123 EditCell1(Function<ObservableList, StringProperty> property) {
124 this.property = property ;
125
126 textProperty().bind(itemProperty());
127 setGraphic(textField);
128 setContentDisplay(ContentDisplay.TEXT_ONLY);
129
130 textField.requestFocus();
131
132
133 textField.setOnAction(evt -> {
134 commitEdit(textField.getText());
135
136 });
137
138
139 textField.setOnKeyPressed(new EventHandler(){
140 @Override
141 public void handle(Event arg0) {
142
143
144
145 }
146 });
147
148
149 }
150
151
152
153
154 @Override
155 public void startEdit() {
156 super.startEdit();
157 textField.setText(getItem());
158 setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
159 textField.requestFocus();
160 }
161
162
163
164
165
166
167 @Override
168 public void cancelEdit() {
169 super.cancelEdit();
170 setContentDisplay(ContentDisplay.TEXT_ONLY);
171 }
172
173
174
175
176
177 @Override
178 public void commitEdit(String text) {
179 super.commitEdit(text);
180
181
182 {
183
184 final ObservableList<TablePosition> selectedCells = table.getSelectionModel().getSelectedCells();
185 for (TablePosition pos : selectedCells) {
186
187 String examvalue=textField.getText();
188
189 System.out.println(examvalue+" where admno="+table.getColumns().get(0).getCellObservableValue(pos.getRow()).getValue());
190
191 table.getSelectionModel().selectBelowCell();
192
193 }
194
195
196 }
197
198 setContentDisplay(ContentDisplay.TEXT_ONLY);
199 }
200
201
202
203
204}