我正在學習JavaFX。我創建了我的TableView
並用數據填充它。我添加了一個按鈕,點擊時可以打印表格內容。在JavaFX中打印TableView內容
這裏是整個代碼:
`public final class TableViewSample2 extends Application {
private TableView<Person> table;
private ObservableList<Person> list;
public void createTable() {
table = new TableView<>();
table.setEditable(true);
list = FXCollections.observableArrayList(
new Person("Jacob", "Smith", "[email protected]"),
new Person("Isabella", "Johnson", "[email protected]"),
new Person("Ethan", "Williams", "[email protected]"),
new Person("Emma", "Jones", "[email protected]"),
new Person("Michael", "Brown", "[email protected]"));
//associating data with the table columns
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("name"));
TableColumn SurnameCol = new TableColumn("Surname");
SurnameCol.setMinWidth(100);
SurnameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("surname"));
TableColumn emailCol = new TableColumn("Emil");
emailCol.setMinWidth(100);
emailCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("email"));
table.setItems(list);
table.getColumns().addAll(firstNameCol, SurnameCol, emailCol);
}
@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
Scene scene = new Scene(root, 300, 250);
this.createTable();
Label label = new Label("My Address Book");
Button button = new Button("Print");
//printing
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println(" can I print?");
PrinterJob printerJob = PrinterJob.createPrinterJob();
if (printerJob.showPrintDialog(primaryStage) && printerJob.printPage(table))
{
printerJob.endJob();
System.out.println("printed");
}
}
});
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().addAll(label, table, button);
root.getChildren().add(vbox);
primaryStage.setTitle("Sample TableView");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}}
當我運行該程序,作爲它應該顯示的表。完善。但是,當我點擊打印按鈕時,什麼都沒有發生。當我看到此代碼時,我正在查看如何打印TableView內容。我試圖在控制檯輸出一些消息,但沒有顯示。
我該如何解決這個問題?
什麼是你的「我可以打印?」 - 輸出。這是在你的控制檯上? – chris
@chris是的。因爲當我點擊打印按鈕時它沒有做任何事情,我想看看它是否可以執行這些語句。但是,即使當我評論與打印相關的代碼時,它也不會打印這些語句。 – JWizard
完整示例爲我打印'我可以打印嗎? – ItachiUchiha