Инструменты пользователя

Инструменты сайта


develop:java:javafx_howto

Это старая версия документа!


JavaFX_howto

Сборка/запуск

т.к. пакет FX выпилили в отдельный модуль, то и для сборки/запуска нужно еще что то использовать, находится все в OpenJFX, по аналогии с JDK скачивается/ставится
Вроде как можно с помощью мавена включить зависимости в состав пакета, но что то не получается пока, включает все, но не запускается
Второй вариант, это таскать с собой эту jdk, указывая путь к ней при запуске, так работает

java --module-path path/to/javafx/lib --add-modules javafx.controls,javafx.fxml -jar myproject.jar
:!: Проба1_javafx-maven-plugin

git
pow.xml

(...)
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>20.0.1</version>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.8</version>
                <configuration>
                    <mainClass>com.sakeep.Launcher</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
(...)
maven clean compile package install

На выходе файл 3кб, ест-но ничего не содержит в себе. и нихрена не запускается, даже на той же машине
возможно его надо мавеном запускать, но с ide-ешным хз как его там

:!: Добавим плагин maven-assembly-plugin
(...)
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.sakeep.Launcher</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
(...)

На выходе уже файл 8мб, содержит в себе все классы, запускается на рабочей машине, но не стартует на другой, ошибки «unamed module..»

:!:
 
 

Image

:!: Image to BufferedImage, save to File
Image img = (откуда нибудь берем Image);
BufferedImage bImage = new BufferedImage(img.getWidth(null)+20, img.getHeight(null)+20, BufferedImage.TYPE_INT_ARGB);
Graphics2D bGr = bImage.createGraphics();
bGr.drawImage(img, 0, 0, null);
bGr.dispose();
 
File outputfile = new File("itext_img.png");
ImageIO.write(bImage, "png", outputfile);

PDF

Для работы с pdf есть библиотека itext дока
Работать удобно, можно ШК организовать, но нет печати, для этого нашелся пакет Apache PDFBox

:!: Примеры

Генерация ШК и сохранение

com.itextpdf.text.Document document = new com.itextpdf.text.Document();
PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("tmp/itext_probe.pdf"));
 
document.setPageSize(new com.itextpdf.text.Rectangle(58,40));
document.setMargins(2,2,2,2);
document.open();
PdfContentByte pdfContentByte = pdfWriter.getDirectContent();
Barcode128 barcode128 = new Barcode128();
barcode128.setCode("myString");
barcode128.setCodeType(Barcode128.CODE128);
com.itextpdf.text.Image code128Image = barcode128.createImageWithBarcode(pdfContentByte, null, null);
code128Image.scaleToFit(55,40);
code128Image.setAlignment(com.itextpdf.text.Image.ALIGN_MIDDLE);
 
document.add(code128Image);
document.close();

Печать

PDDocument pdfDoc = PDDocument.load(new File("tmp/itext_probe.pdf"));
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(new PDFPageable(pdfDoc));
job.setPrintService(printServices[0]);
job.print();
:!:
 
 
develop/java/javafx_howto.1687788676.txt.gz · Последнее изменение: 2023/06/26 14:11 — admin