У меня проблемы с отображением целочисленного массива в столбце C2 в TableView. В tableView я получаю что-то вроде этого [Ljava.lang.Integer: @ 3a9e316b]. Я думаю, что проблема связана с cellValueFactory, но теперь я не знаю, как я могу решить эту проблему.
Вот мой контроллер
public class FXMLDocumentController implements Initializable {
private JavaFXApplication4 mainApp;
double orgSceneX, orgSceneY;
double orgTranslateX, orgTranslateY;
public List<Krawendzie> list = new ArrayList<Krawendzie>();
@FXML
private TableColumn C1;
@FXML
private TableColumn C2;
@FXML
private TableView<Krawendzie> laczenie;
@FXML
private Label label;
@FXML
private ComboBox<String> combo;
@FXML
private Pane Scena;
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
label.setText("Hello World!");
}
@Override
public void initialize(URL url, ResourceBundle rb) {
Clipboard clipboard = Clipboard.getSystemClipboard();
C1.setCellValueFactory(new PropertyValueFactory<Krawendzie,Integer>("Wezel"));
C2.setCellValueFactory(new PropertyValueFactory<Krawendzie,Integer>("Mozliwosci"));
laczenie.getSelectionModel().setCellSelectionEnabled(true);
laczenie.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
}
});
combo.getItems().addAll("2","3","4","5","6","7","8");
list.removeAll(list);
}
@FXML
private void itemselected(ActionEvent event){
}
@FXML
private void rysuj(ActionEvent event) {
rysuj2(Integer.parseInt(combo.getValue()));
// RysowanieKrawendzi();
}
private void RysowanieKrawendzi()
{
DoubleProperty xValue = new SimpleDoubleProperty();
Circle circle = list.get(7).getCircle();
xValue.bind(circle.centerXProperty());
Point2D x = circle.localToScene(Point2D.ZERO);
}
private void rysuj2(Integer Ilosc){
list.removeAll(list);
Scena.getChildren().clear();
File f = new File("././Image/Imapges1.jpg");
Image image = new Image(f.toURI().toString());
Integer ilosc = 0;`enter code here`
Integer [] moz = new Integer[Ilosc];
for (int i = 0; i<Ilosc;i++)
{
for (int m = 0; m<Ilosc; m++)
{
moz[m] = Integer.valueOf(m);
}
Circle circle = new Circle(20 * (i+1), 20* (i+1), 20);
circle.setFill(new ImagePattern(image));
circle.setCursor(Cursor.HAND);
circle.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
orgSceneX = t.getSceneX();
orgSceneY = t.getSceneY();
orgTranslateX = ((Circle)(t.getSource())).getTranslateX();
orgTranslateY = ((Circle)(t.getSource())).getTranslateY();
}
});
circle.setOnMouseDragged(new EventHandler<MouseEvent>(){
public void handle(MouseEvent t)
{
double offsetX = t.getSceneX() - orgSceneX;
double offsetY = t.getSceneY() - orgSceneY;
double newTranslateX = orgTranslateX + offsetX;
double newTranslateY = orgTranslateY + offsetY;
((Circle)(t.getSource())).setTranslateX(newTranslateX);
((Circle)(t.getSource())).setTranslateY(newTranslateY);
}
});
Scena.getChildren().add(circle);
// Scena.setClip(circle);
list.add(new Krawendzie(ilosc,circle,moz));
ilosc++;
}
getData();
}
public void getData()
{
ObservableList<Krawendzie> obsList = FXCollections.observableArrayList(list);
laczenie.setItems(obsList);
}
}
Вот класс
public class Krawendzie {
private Integer Wezel;
private Integer[] Mozliwosci;
private Circle circle;
public Integer getWezel() {
return Wezel;
}
public void setCircle(Circle circle) {
this.circle = circle;
}
public Circle getCircle() {
return circle;
}
public Integer[] getMozliwosci() {
return Mozliwosci;
}
public void setWezel(Integer Wezel) {
this.Wezel = Wezel;
}
public void setMozliwosci(Integer[] Mozliwosci) {
this.Mozliwosci = Mozliwosci;
}
Krawendzie(Integer Wezel)
{
this.Wezel = Wezel;
}
Krawendzie(Integer Wezel,Circle circle,Integer[] mozliwosci)
{
this.Wezel = Wezel;
this.circle = circle;
this.Mozliwosci = mozliwosci;
}
}
Вы можете использовать
C2.setCellValueFactory(
new Callback<TableColumn.CellDataFeatures<Krawendzie, Integer[]>,
ObservableValue<String>>()
{
@Override
public ObservableValue<String> call( TableColumn.CellDataFeatures<Krawendzie,
Integer[]> p )
{
return new ReadOnlyStringWrapper(
Arrays.toString( p.getValue().getMozliwosci() )
);
}
} );
После получения p.getValue().getMozliwosci()
целочисленного массива вы также можете просмотреть его и отобразить в другом формате.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句