Ich habe einige Tests mit dem SpreadsheetView-Steuerelement von ControlsFX (v8.40.12) durchgeführt und kann außer einer anderen Zelle keinen anderen Objekttyp hinzufügen Text.Ein DatePicker oder eine Schaltfläche oder ein Bild kann nicht in SpreadsheetView-Zellen eingefügt werden
Gibt es ein Problem mit dem Code oder ich vermisse nur etwas? Kann mir jemand sagen, wie kann ich das tun?
Ich verwende SpreadsheetCellBase, SetGraphic und SetCellValue dafür.
Einige Kommentare sind in Portugiesisch, sorry!
Vielen Dank.
package javafx_controlsfx_spreadsheetview;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Alert;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import java.util.Arrays;
import java.util.List;
import org.controlsfx.control.spreadsheet.GridBase;
import org.controlsfx.control.spreadsheet.Picker;
import org.controlsfx.control.spreadsheet.SpreadsheetCell;
import org.controlsfx.control.spreadsheet.SpreadsheetCellBase;
import org.controlsfx.control.spreadsheet.SpreadsheetView;
public class JavaFX_ControlsFX_SpreadsheetView extends Application
{
@Override
public void start(Stage primaryStage)
{
int numLinhas = 25;
int numColunas = 20;
GridBase grelha = new GridBase(numLinhas, numColunas);
ObservableList<ObservableList<SpreadsheetCell>> linhas = FXCollections.<ObservableList<SpreadsheetCell>>observableArrayList();
ObservableList<SpreadsheetCell> celulas = null;
SpreadsheetCellBase celula;
for (int linha = 0; linha < grelha.getRowCount(); linha++)
{
celulas = FXCollections.<SpreadsheetCell>observableArrayList();
for (int coluna = 0; coluna < grelha.getColumnCount(); coluna++)
{
celula = new SpreadsheetCellBase(linha, coluna, 1, 1);
celula.setItem("---");
celulas.add(celula);
}
linhas.add(celulas);
}
grelha.setRows(linhas);
SpreadsheetView sv = new SpreadsheetView(grelha);
// Atribui um valor à (6ª Linha -> 6)/8ª Coluna -> H).
grelha.setCellValue(5, 7, "Pedro");
// Atribui um valor à (5ª Linha -> 5)/13ª Coluna -> M).
grelha.setCellValue(4, 12, 164.58);
// Popula a Grelha de A1 a A6, com os países definidos na Lista abaixo criada.
List<String> countries = Arrays.asList("China", "França", "Nova Zelândia", "Escócia", "Alemanha", "Canada");
byte r = 0;
for (String c : countries)
{
grelha.setCellValue(r, 0, c);
r++;
}
// Part of the code that doesn't work!
celula = new SpreadsheetCellBase(3, 7, 1, 1);
celula.setGraphic(new Button("Teste"));
grelha.setCellValue(3, 7, celula);
SpreadsheetCellBase cell = new SpreadsheetCellBase(10, 4, 1, 1);
cell.setGraphic(new DatePicker());
SpreadsheetCellBase cell2 = new SpreadsheetCellBase(5, 9, 1, 1);
cell2.setGraphic(new ImageView(new Image(getClass().getResourceAsStream("pic.png"))));
// -------------------------------------
sv.getStylesheets().add(getClass().getResource("Styles.css").toExternalForm());
Scene scene = new Scene(sv, 1300, 800);
primaryStage.setTitle("JavaFX - ControlsFX (SpreadsheetView)");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args)
{
launch(args);
}
}
Es gibt eine ähnliche Position, aber es gibt mir keine Antwort auf diese Frage: How to change text in cells (SpreadsheetView by ControlsFX)?