测试开发了一个javaFx写的支持文本输入,pdf文件转成图片显示,可以进行图标显示的demo,其中用Eclipse实现,代码结构如下图所示:

Main.java代码如下所示:

package application;
import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.fxml.FXML;import javafx.fxml.FXMLLoader;import javafx.scene.Parent;import javafx.scene.Scene;import javafx.scene.control.Button;import
javafx.scene.control.TextField;import javafx.scene.layout.StackPane;import javafx.scene.paint.Color;import javafx.stage.Stage;public class Main extends Application {@Overridepublic void start(Stage primaryStage) {try {Parent root = FXMLLoader.load(getClass().getResource("/application/MyScence.fxml"));primaryStage.setTitle("我的第一个fx应用");primaryStage.setScene(new
Scene(root));primaryStage.show();} catch(Exception e) {e.printStackTrace();}}// @Override// public void start(Stage primaryStage) {// Button btn = new Button();// btn.setText("Say 'Hello World'");// btn.setOnAction(new EventHandler<ActionEvent>() {// @Override//
public void handle(ActionEvent event) {// System.out.println("Hello World!");// }// }); StackPane root = new StackPane();// root.getChildren().add(btn);// Scene scene = new Scene(root, 300, 250,Color.BLACK);// //  primaryStage.setTitle("Hello World!");//
//primaryStage.setFullScreen(true);// primaryStage.setScene(scene);// primaryStage.show();// }public static void main(String[] args) {launch(args);}}
布局文件如下所示:
<?xml version="1.0" encoding="UTF-8"?><?import javafx.geometry.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?><BorderPane fx:id="myBorderPane" focusTraversable="true" onKeyPressed="#keyInputAction" prefHeight="200.0" prefWidth="200.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MyController"><center><HBox prefHeight="100.0" prefWidth="200.0" BorderPane.alignment="CENTER"><children><ImageView fx:id="myImageView" fitHeight="100.0" fitWidth="200.0" onDragDetected="#OnDragDetected" onDragOver="#onDragOver" onMousePressed="#onMousePressed" onScroll="#onScoller" pickOnBounds="true" preserveRatio="true"><viewport><Rectangle2D /></viewport></ImageView></children></HBox></center><bottom><Button fx:id="myButton" mnemonicParsing="false" onAction="#showDataTime" onMouseClicked="#showDataTime" text="显示时间" BorderPane.alignment="CENTER" /></bottom><top><HBox alignment="TOP_CENTER" prefHeight="28.0" prefWidth="200.0" spacing="10.0" style="-fx-background-color: #336699;" BorderPane.alignment="CENTER"><children><TextField fx:id="myTextFile" focusTraversable="false"><padding><Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /></padding></TextField></children><padding><Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /></padding></HBox></top></BorderPane>
MyController.java如下:
package application;import java.awt.ItemSelectable;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;import javafx.beans.Observable;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.embed.swing.SwingFXUtils;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DragEvent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.BorderPane;
import pdfboxTest.PdfBoxTest;public class MyController implements Initializable {@FXMLprivate Button myButton;@FXMLprivate TextField myTextFile;@FXMLprivate ImageView myImageView;@FXMLprivate BorderPane myBorderPane;    private Boolean isDragStart = false;private double startX;private double startY;private double traslateX;private double traslateY;@Overridepublic void initialize(URL location, ResourceBundle resources) {// TODO Auto-generated method stubmyTextFile.setVisible(true);myTextFile.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {@Overridepublic void handle(KeyEvent event) {event.consume();KeyCode code = event.getCode();if (code == KeyCode.ENTER) {try {System.out.println(myTextFile.getText());//myImageView.setVisible(false);
//                     TextField tx = new TextField(myTextFile.getText());
//                     myBorderPane.setCenter(tx);//插入表格TableView<Task> tv = new TableView<Task>();ObservableList<Task> Task = FXCollections.observableArrayList();Task.add(new Task("雪龙号",1,"10-1完工"));Task.add(new Task("南极号", 2, "10-2完工"));   tv.setItems(Task);TableColumn<Task, String> shipCol = new TableColumn<Task, String>("ship");shipCol.setCellValueFactory(new PropertyValueFactory<>("ship"));TableColumn<Task,Integer>  numCol = new TableColumn<Task, Integer>("num"); numCol.setCellValueFactory(new PropertyValueFactory<>("num"));TableColumn<Task,String> planCol = new TableColumn<Task,String>("plan");planCol.setCellValueFactory(new PropertyValueFactory<>("plan"));tv.getColumns().setAll(shipCol,numCol,planCol);                      myBorderPane.setCenter(tv);myTextFile.clear();new Robot().keyPress(java.awt.event.KeyEvent.VK_RIGHT);//什么意思// XXX javafx has no robot for key type...} catch (Exception e1) {}event.consume();}}});}public void showDataTime()  {System.out.println("按钮被点击啦啊啊啊啊!");Date now = new Date();DateFormat df = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss");String dateTimeString = df.format(now);BufferedImage image = null;try {image = PdfBoxTest.getImageFromPdf("H:/test.pdf");//ImageIO.write(image, "png", new File("D:/test.png"));System.out.println("image写入完毕");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}WritableImage wImage = new WritableImage(image.getWidth(),image.getHeight());System.out.println("image.getWidth()"+image.getWidth()+"  image.getHeight()"+image.getHeight());SwingFXUtils.toFXImage(image, wImage);//什么作用myTextFile.setText(dateTimeString);//设置文本框默认显示时间myImageView.setFitHeight(600);myImageView.setFitWidth(900);myImageView.setImage(wImage);}public void keyInputAction() {System.out.println("键盘事件被监听到了");myTextFile.requestFocus();String str = myTextFile.getText();CharSequence cs = myTextFile.getCharacters();//getCharacters是返回的什么?System.out.println("cs:" + cs);System.out.println(str);myTextFile.clear();}public void onScoller(ScrollEvent event) {System.out.println("滚轮事件触发");System.out.println(event.getDeltaX());System.out.println(event.getDeltaY());if (event.getDeltaY() > 0) {myImageView.setScaleX(myImageView.getScaleX() * 1.2);myImageView.setScaleY(myImageView.getScaleY() * 1.2);event.consume();// myImageView.resize(500, 500);System.out.println("image resized!");// ScaleTransition st =// ScaleTransitionBuilder.create().byX(1.5).byY(1.5).node(myImageView).duration(Duration.millis(500)).build();} else {myImageView.setScaleX(myImageView.getScaleX() * 0.8);myImageView.setScaleY(myImageView.getScaleY() * 0.8);}}public void onMousePressed(MouseEvent event) {System.out.println("onMousePressed:x=" + event.getX() + ";y=" + event.getY());startX = event.getSceneX();startY = event.getSceneY();traslateX = myImageView.getTranslateX();traslateY = myImageView.getTranslateY();}public void onMouseMoved(MouseEvent event) {System.out.println("onMouseMoved:x=" + event.getX() + ";y=" + event.getY());}@FXMLpublic void onMouseRelease(MouseEvent event) {System.out.println("onMouseRelease:x=" + event.getX() + ";y=" + event.getY());isDragStart = false;event.consume();}@FXMLpublic void OnDragDetected(MouseEvent event) throws InterruptedException {System.out.println("OnDragDetected" + event.getX() + ";y=" + event.getY());//填充内容,触发OnDragDetected事件Dragboard db = myImageView.startDragAndDrop(TransferMode.ANY);ClipboardContent content = new ClipboardContent();content.putString("hahahahh");db.setContent(content);
//      startX = event.getSceneX();
//      startY = event.getSceneY();event.consume();}public void onDragOver(DragEvent event) {System.out.println("onDragOver:" + (event.getSceneX()-startX) + ";y=" + (event.getSceneY()-startY));
//      traslateX = event.getSceneX()-startX;
//      traslateY = event.getSceneY()-startY;myImageView.setTranslateX(traslateX+event.getSceneX()-startX);myImageView.setTranslateY(traslateY+event.getSceneY()-startY);}}
Task类
package application;public class Task{private String ship;private Integer num;private String plan;Task(String ship,Integer num, String plan){this.ship= ship;this.num = num;this.plan = plan;}public String getShip() {return ship;}public void setShip(String ship) {this.ship = ship;}public Integer getNum() {return num;}public void setNum(Integer num) {this.num = num;}public String getPlan() {return plan;}public void setPlan(String plan) {this.plan = plan;}}
pdf转图片的实现:
package pdfboxTest;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
import org.apache.pdfbox.rendering.PDFRenderer;public class PdfBoxTest {public static void main(String[] args) throws InvalidPasswordException, IOException {PDDocument doc = PDDocument.load(new File("H:/test.pdf"));PDFRenderer renderer = new PDFRenderer(doc);int pageCount = doc.getNumberOfPages();System.out.println(pageCount);for(int i=0;i<pageCount;i++){BufferedImage image = renderer.renderImageWithDPI(i, 800);ImageIO.write(image, "PNG", new File("H:/"+i+".png"));}}public static BufferedImage getImageFromPdf(String pdfLocation) throws IOException{PDDocument doc = PDDocument.load(new File(pdfLocation));//加载pdf文件PDFRenderer renderer = new PDFRenderer(doc);//PDFRender类提供对pdf的一些操作类//int pageCount = doc.getNumberOfPages();BufferedImage image = renderer.renderImageWithDPI(0, 150);return image.getSubimage(0, 400, image.getWidth(), 900);}
}


JavaFX实现图片显示,文本输入,表格显示相关推荐

  1. python图片显示文本框_Python3 tkinter基础 Text image 文本框中插入图片

    Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda : 4.5.11 typesetting : Markdown ...

  2. python图片显示文本框_用PYTHON以“形式”同时显示图像和文本框

    我是PYTHON新手.我试图用PYTHON以"表单"同时显示图像和文本框.在 我的问题是:图像在屏幕上不可见.如何解决这个问题?在 谢谢 我的代码:import tkinter a ...

  3. java fx 文本输入,DOC-03-08 文本框(Text Field)

    DOC-03-08 文本框(Text Field) 本章讨论Text Field组件的功能. TextField类实现了一个接收和显示文本输入的UI组件.它提供了从用户接收文本输入的功能.这个类和另一 ...

  4. 两台电脑串口传输文件及调用opencv库编程显示图片和文本

    文章目录 一.两台电脑利用串口进行文件传输 (一).实验内容 (二).配置环境 (三).实验过程 (四).结果分析 二.在Ubuntu下基于Linux环境调用opencv库编程显示图片和文本 (一). ...

  5. DOM--操作元素案例:分时显示不同的图片以及问候语;仿淘宝关闭标签案例;隐藏显示文本框内容;仿新浪注册页面中密码长度的判定

    分时显示不同的图片以及问候语 分析: 根据不同的时间来判断,所以需要获取到系统的时间. 利用分支语言来设置不同的图片 需要更换不同的图片,因此需要操作img的元素src 需要一个div来显示不同问候语 ...

  6. opencv中在图片上显示文本

    CvFont font; cvInitFont(&font,CV_FONT_VECTOR0,1,1,0,1,8); //在图像中显示文本字符串 cvPutText(image,"HE ...

  7. QTextEdit实现图片和文本同行显示

    1.开发环境:Qt 4.7.3 + MinGW 32bit (MSVC2015 32bit) 2.实现大纲: 1)实现图片和文本在同一行显示,且能够设置字体大小和颜色 2)能够手动设置行的宽度和间距 ...

  8. qt 绘制消息框_Qt显示带文本输入的消息框

    是否有任何简单而干净的方式来显示Qt4中的消息框(实际上是PyQt4),支持文本输入,而不仅仅是从预定义列表中选择一个按钮?我可以(也有部分)通过编写一个自定义类来完成这个任务,只是为了显示这样的对话 ...

  9. Qt实现 QLabel显示文本与图片、动图

    QLabel概念: 在Qt中,QLabel类用于文本或图片(包括动图gif).视频的显示,并不提供用户交互功能, 如果需要交互,比如响应鼠标事件,根据面向对象的里氏替换原则,子类必须能够替换它们的父类 ...

最新文章

  1. php fpm是干嘛的,php-fpm是什么?
  2. (转)Thrift在Windows及Linux平台下的安装和使用示例
  3. linux创建定时任务命令,linux设置定时任务的方法步骤
  4. 学习Python不需要程基础?
  5. 【算法】汉诺塔 移动
  6. Hadoop(二)搭建Hadoop集群
  7. LeetCode - 48. Rotate Image
  8. IntelliJ IDEA 中 右键新建时,选项没有Java class
  9. 运输层_TCP可靠传输的实现
  10. 介绍几款WAP网页制作工具
  11. matlab常见函数表达式,MATLAB常用函数简介
  12. python3多线程爬取微博配图相册,可自动获取session【简单,快速】
  13. 图片上怎么加文字?看完就你知道了
  14. 加州大学欧文分校 计算机工程,美国加州大学欧文分校计算机工程本科.pdf
  15. android视频处理之动态时间水印效果
  16. 【工业控制】多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】
  17. c# WPF中对输入值任意限制的方法及通用示例
  18. 2017年企业调薪幅度公布 你和高薪差多远?
  19. 虚拟机(Ubuntu18.04版本)中文字体乱码或混乱的一种解决方案
  20. lise什么意思中文翻译_法语助手|法汉-汉法词典 lise是什么意思_lise的中文解释和发音_lise的翻译_lise怎么读...

热门文章

  1. 【VC皮肤】破解版skin++皮肤库使用
  2. 锐捷AC控制器,采用微信公众号认证后上网,如何设置
  3. 关于微信小程序中获取单个checkbox是否被选中状态的值
  4. androidkiller 关键词修改方法
  5. 2019_NAACL_A Capsule Network-based Embedding Model for Knowledge Graph Completion and Search Persona
  6. List集合(存放有序可重复队列)
  7. 一台服务器可以架设几个不同的传奇版本
  8. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java装修服务网站5ff59
  9. 【算法】梯度下降算法及python实现
  10. 七天雅思口语涨分0.5,小龙坎雅思培训课教你如何做!