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

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


develop:java:javafx_howto

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:java:javafx_howto [2023/06/26 14:11]
admin
develop:java:javafx_howto [2023/08/05 11:49] (текущий)
admin
Строка 3: Строка 3:
  
 ===== Сборка/запуск ===== ===== Сборка/запуск =====
 +<details>
 +<summary>:!: Доп пакеты</summary>
 т.к. пакет FX выпилили в отдельный модуль, то и для сборки/запуска нужно еще что то использовать, находится все в [[https://openjfx.io/|OpenJFX]], по аналогии с JDK скачивается/ставится\\ т.к. пакет FX выпилили в отдельный модуль, то и для сборки/запуска нужно еще что то использовать, находится все в [[https://openjfx.io/|OpenJFX]], по аналогии с JDK скачивается/ставится\\
 Вроде как можно с помощью мавена включить зависимости в состав пакета, но что то не получается пока, включает все, но не запускается\\ Вроде как можно с помощью мавена включить зависимости в состав пакета, но что то не получается пока, включает все, но не запускается\\
Строка 9: Строка 11:
 java --module-path path/to/javafx/lib --add-modules javafx.controls,javafx.fxml -jar myproject.jar java --module-path path/to/javafx/lib --add-modules javafx.controls,javafx.fxml -jar myproject.jar
 </code> </code>
 +</details>
  
 <details> <details>
Строка 120: Строка 123:
 com.itextpdf.text.Document document = new com.itextpdf.text.Document(); com.itextpdf.text.Document document = new com.itextpdf.text.Document();
 PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("tmp/itext_probe.pdf")); PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("tmp/itext_probe.pdf"));
- 
 document.setPageSize(new com.itextpdf.text.Rectangle(58,40)); document.setPageSize(new com.itextpdf.text.Rectangle(58,40));
 document.setMargins(2,2,2,2); document.setMargins(2,2,2,2);
 document.open(); document.open();
 +
 PdfContentByte pdfContentByte = pdfWriter.getDirectContent(); PdfContentByte pdfContentByte = pdfWriter.getDirectContent();
 +
 +// Генерируем баркод
 Barcode128 barcode128 = new Barcode128(); Barcode128 barcode128 = new Barcode128();
 barcode128.setCode("myString"); barcode128.setCode("myString");
 barcode128.setCodeType(Barcode128.CODE128); barcode128.setCodeType(Barcode128.CODE128);
 +
 +// Размеры
 +barcode128.setSize(10);
 +barcode128.setBarHeight(70);
 +
 com.itextpdf.text.Image code128Image = barcode128.createImageWithBarcode(pdfContentByte, null, null); com.itextpdf.text.Image code128Image = barcode128.createImageWithBarcode(pdfContentByte, null, null);
 code128Image.scaleToFit(55,40); code128Image.scaleToFit(55,40);
-code128Image.setAlignment(com.itextpdf.text.Image.ALIGN_MIDDLE); +code128Image.setAbsolutePosition(10,10);
 document.add(code128Image); document.add(code128Image);
 document.close(); document.close();
Строка 149: Строка 158:
  
  
- +===== Печать =====
- +
-=====  =====+
  
 <details> <details>
-<summary>:!: </summary> +<summary>:!: Пример печати изображения с текстом</summary> 
-<code xml>+ 
 +<code java> 
 +java.awt.Image awtImage = barcode128.createAwtImage(Color.black, Color.WHITE); 
 +PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null); 
 +PrinterJob job = PrinterJob.getPrinterJob(); 
 +// Размеры страницы для печати 
 +PageFormat pageForm = job.defaultPage(); 
 +Paper paper = pageForm.getPaper(); 
 +double width = 8d * 72d; 
 +double height = 4d * 72d; 
 +double margin = 1d * 72d; 
 +paper.setSize(width, height); 
 +//paper.setImageableArea(margin, margin, width - (margin * 2), height - (margin * 2)); 
 +paper.setImageableArea(0, 0, width, height); 
 +//pageForm.setOrientation(PageFormat.LANDSCAPE); 
 +pageForm.setPaper(paper); 
 +job.setPrintable(new Printable() { 
 +    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { 
 +        if (pageIndex != 0) { 
 +            return NO_SUCH_PAGE; 
 +        } 
 +        Graphics2D g2d = (Graphics2D) graphics; 
 +        g2d.drawImage(awtImage, 40, 5, null); 
 +        // Пишем текст 
 +        g2d.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 9)); 
 +        FontMetrics fm = g2d.getFontMetrics(); 
 +        String text = selectedProd.getName(); 
 +        // центрирование текста под ШК 
 +        int centerBarcode = awtImage.getWidth(null) / 2 + 40; 
 +        int centerText = fm.stringWidth(text) / 2; 
 +        // добавляем начальный отступ, как у изображения (15) 
 +            // добвялем высоту самого изображения и высоту текста 
 +        int yForText= 5 + awtImage.getHeight(null) + fm.getAscent(); 
 +        g2d.drawString(text, centerBarcode - centerText, yForText); 
 +        // объем на второй строке 
 +        text = selectedProd.getSelectedVolume().getName(); 
 +        // центрирование текста под ШК 
 +        centerText = fm.stringWidth(text) / 2; 
 +        // добавляем начальный отступ, как у изображения (15) 
 +        // добвялем высоту самого изображения и высоту текста 
 +        yForText= 5 + awtImage.getHeight(null) + (fm.getAscent() * 2); 
 +        g2d.drawString(text, centerBarcode - centerText, yForText); 
 +        return PAGE_EXISTS; 
 +    } 
 +}, pageForm); 
 +job.setPrintService(printServices[0]); 
 +//if (job.printDialog()) 
 +    job.print();
 </code> </code>
 +</details>
  
 +
 +
 +
 +===== Сообщения =====
 +
 +<details>
 +<summary>:!: Alert</summary>
 <code bash> <code bash>
 +import javafx.scene.control.Alert;
 +    ...
 +    Alert alert = new Alert(Alert.AlertType.INFORMATION);
 +
 +    alert.setTitle("Information");
 +    alert.setHeaderText(null);
 +    alert.setContentText("Hello World!");
 +
 +    alert.showAndWait();
 </code> </code>
 </details> </details>
- 
  
develop/java/javafx_howto.1687788676.txt.gz · Последнее изменение: 2023/06/26 14:11 — admin