All Classes Namespaces Files Functions Variables
NimiJaVuosiController.java
Go to the documentation of this file.
1 package stringgrid;
2 
3 import java.net.URL;
4 import java.util.ResourceBundle;
5 
6 import fi.jyu.mit.fxgui.StringGrid;
7 import javafx.fxml.FXML;
8 import javafx.fxml.Initializable;
9 import javafx.scene.control.TableView;
10 import javafx.scene.control.TextArea;
11 
12 /**
13  * Esimerkki uudemman StringGridin käytöstä.
14  * Tässä on vain tarkoitus esitellä eri ominaisuuksia.
15  * Ominaisuuksia pitää katsoa yksittäisinä eikä niitä ole kaikkia
16  * pakko käyttää.
17  *
18  * @author vesal
19  * @version 24.3.2016
20  *
21  */
22 public class NimiJaVuosiController implements Initializable {
23  @FXML private StringGrid<?> grid;
24  @FXML private TextArea area;
25  private int vuosi = 1935;
26 
27 
28  @FXML void handleNayta() {
29  String s = grid.getRivit();
30  area.setText(s);
31  grid.set("kissa", 1, 1);
32  }
33 
34 
35  @FXML void handleUusi() {
36  grid.add("Matti", ""+vuosi);
37  vuosi+=10;
38  }
39 
40 
41  @Override
42  public void initialize(URL location, ResourceBundle resources) {
43  grid.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); // ylim. sarake piiloon
44 
45  // Mitä tehdään kun editointi lopetetaan painamalla Enter
46  grid.setOnGridEdit( (t,obj,s,r,c) -> {
47  // area.setText(s + " " + r + " " + c); // pitäisi olla sama kuin:
48  area.setText("'" + s + "' " + t.getRowNr() + " " + t.getColumnNr());
49  return s .trim();
50  });
51 
52 
53  // Mitä tehdään kun solua muokataan
54  // Tässä esimerkissä katsotaan että sarakkeessa 1 on kokonaisluku,
55  // muuten muokkaussolu laitetaan punaiseksi
56  grid.setOnGridLiveEdit( (t,obj,s,r,c,tf) -> {
57  area.setText("'" + s + "' " + r + " " + c);
58  if ( c == 1 ) {
59  try {
60  if ( s.length() > 0 ) Integer.parseInt(s);
61  } catch (Exception e1) {
62  tf.setStyle("-fx-background-color: red");
63  return null;
64  }
65  tf.setStyle("");
66  }
67  return s;
68  });
69 
70 
71  // Asetetaan malliksi tyylejä soluille
72  grid.setStyleClass("virhe,sininen", 1, 1);
73  grid.setStyleClass("s1", 0, 0);
74  grid.setStyleClass("s2", 1, 0);
75  grid.setStyleClass("s3", 2, 0);
76  // grid.setEmptyStyleClass("normaali"); // hoituu myös css:llä
77 
78  // Mitä tehdään kun hiirellä klikataan
79  grid.setOnMouseClicked( e -> {
80  int r = grid.getRowNr();
81  int c = grid.getColumnNr();
82  if ( r < 0 || c < 0 ) { grid.refresh(); return; } // ilman tätä css:ät sekaisin jos lajiteltu
83  if ( e.getClickCount() == 2)
84  ; //grid.setStyleClass("virhe", r, c); // tämä poistaa valitettavasti editin
85  else
86  grid.setStyleClass(null, r, c);
87  area.setText(grid.get(r, c));
88  });
89 
90  grid.setColumnSortOrderNumber(1);
91  grid.setColumnWidth(1, 50);
92 
93  // grid.setSortable(-1, false); // kielletään lajittelu
94  }
95 
96 
97 }