mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-05-13 17:11:51 +00:00
Mode Pleine Largeur et mode Page Entière + S'adapte au petits ecrans
This commit is contained in:
@@ -44,6 +44,12 @@ public class MenuAffichage extends JMenu {
|
||||
add(new ZoomPlus(parent));
|
||||
add(new ZoomDefaut(parent));
|
||||
add(new ZoomMoins(parent));
|
||||
addSeparator();
|
||||
|
||||
|
||||
|
||||
add(new PageEntiere(parent));
|
||||
add(new PleineLargeur(parent));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package lecteur_pdf.menuBar.menuItems;
|
||||
|
||||
import lecteur_pdf.IhmPdf;
|
||||
|
||||
public class PageEntiere extends MenuItem {
|
||||
/**
|
||||
* TODO
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public PageEntiere(IhmPdf parent) {
|
||||
super(parent, "Page Entière");
|
||||
|
||||
addActionListener(e -> {
|
||||
parent.getPdfPanel().setPleineLargeur(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package lecteur_pdf.menuBar.menuItems;
|
||||
|
||||
import lecteur_pdf.IhmPdf;
|
||||
|
||||
public class PleineLargeur extends MenuItem{
|
||||
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public PleineLargeur(IhmPdf parent) {
|
||||
super(parent, "Pleine Largeur");
|
||||
|
||||
addActionListener(e -> {
|
||||
parent.getPdfPanel().setPleineLargeur(true);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,7 @@ public class ZoomDefaut extends MenuItem {
|
||||
super(parent, "Zoom 100%");
|
||||
|
||||
addActionListener(e -> {
|
||||
parent.getPdfPanel().updateScale(1.0f);
|
||||
parent.getPdfPanel().updateScaleZoom(1.0f);
|
||||
parent.validate();
|
||||
});
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public class ZoomMoins extends MenuItem {
|
||||
super(parent, "Zoom 50%");
|
||||
|
||||
addActionListener(e -> {
|
||||
parent.getPdfPanel().updateScale(0.5f);
|
||||
parent.getPdfPanel().updateScaleZoom(0.5f);
|
||||
parent.validate();
|
||||
});
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public class ZoomPlus extends MenuItem {
|
||||
super(parent, "Zoom 150%");
|
||||
|
||||
addActionListener(e -> {
|
||||
parent.getPdfPanel().updateScale(1.5f);
|
||||
parent.getPdfPanel().updateScaleZoom(1.5f);
|
||||
parent.validate();
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package lecteur_pdf.pdf;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class OutilsImage {
|
||||
|
||||
/**
|
||||
* Change la taille d'une image
|
||||
* @param img
|
||||
* @param newW
|
||||
* @param newH
|
||||
* @return
|
||||
*/
|
||||
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
|
||||
int w = img.getWidth();
|
||||
int h = img.getHeight();
|
||||
BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
|
||||
Graphics2D g = dimg.createGraphics();
|
||||
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
|
||||
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
|
||||
g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
|
||||
g.dispose();
|
||||
return dimg;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param img
|
||||
* @param newW
|
||||
* @return
|
||||
*/
|
||||
public static BufferedImage resizeWidth(PdfLoader a, Icon img, int newW) {
|
||||
int w = a.getMinWidth();
|
||||
int h = a.getMinHeight();
|
||||
|
||||
float ratio = (float)newW / (float)w;
|
||||
|
||||
return a.setScale(ratio);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param img
|
||||
* @param newH
|
||||
* @return
|
||||
*/
|
||||
public static BufferedImage resizeHeight(BufferedImage img, int newH) {
|
||||
int w = img.getWidth();
|
||||
int h = img.getHeight();
|
||||
|
||||
int ratio = newH / (1+h);
|
||||
// System.out.println(ratio);
|
||||
|
||||
int newW = w * ratio;
|
||||
|
||||
return resize(img, newW, newH);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,12 +26,15 @@ public class PdfLoader {
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
PDDocument document;
|
||||
private PDDocument document;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
PDFRenderer renderer;
|
||||
private PDFRenderer renderer;
|
||||
|
||||
private int minWidth;
|
||||
private int minHeight;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
@@ -42,6 +45,16 @@ public class PdfLoader {
|
||||
public PdfLoader(File file) throws IOException {
|
||||
document = PDDocument.load(file);
|
||||
renderer = new PDFRenderer(document);
|
||||
minWidth = -1;
|
||||
minHeight = -1;
|
||||
}
|
||||
|
||||
public int getMinWidth() {
|
||||
return minWidth;
|
||||
}
|
||||
|
||||
public int getMinHeight() {
|
||||
return minHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,6 +66,18 @@ public class PdfLoader {
|
||||
return document.getNumberOfPages();
|
||||
}
|
||||
|
||||
|
||||
public BufferedImage renderPage(int pageIndex) throws IOException {
|
||||
return renderPage(pageIndex, 1.0f);
|
||||
}
|
||||
|
||||
public BufferedImage setScale(float scale) {
|
||||
try {
|
||||
return renderPage(0, scale);
|
||||
} catch (IOException ignored) {}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
@@ -65,7 +90,15 @@ public class PdfLoader {
|
||||
if (pageIndex < 0 || pageIndex >= this.getNbPages()) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
return renderer.renderImage(pageIndex, scale);
|
||||
|
||||
BufferedImage img = renderer.renderImage(pageIndex, scale);
|
||||
|
||||
if (scale == 1.0f && minWidth == -1 && minHeight == -1) {
|
||||
minWidth = img.getWidth();
|
||||
minHeight = img.getHeight();
|
||||
}
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -75,6 +108,8 @@ public class PdfLoader {
|
||||
try {
|
||||
renderer = null;
|
||||
document.close();
|
||||
minWidth = -1;
|
||||
minHeight = -1;
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="lecteur_pdf.pdf.PdfPanel">
|
||||
<grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="2" column-count="6" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<xy x="20" y="20" width="500" height="400"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<component id="9ec2f" class="javax.swing.JLabel" binding="pageIndicator">
|
||||
<constraints>
|
||||
<grid row="0" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="/ - "/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="6e10b" class="javax.swing.JButton" binding="suivantButton" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="0" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Suivant"/>
|
||||
</properties>
|
||||
</component>
|
||||
<hspacer id="cb0bf">
|
||||
<constraints>
|
||||
<grid row="0" column="5" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</hspacer>
|
||||
<hspacer id="75413">
|
||||
<constraints>
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</hspacer>
|
||||
<component id="6531c" class="javax.swing.JButton" binding="precedentButton">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Précédent"/>
|
||||
</properties>
|
||||
</component>
|
||||
<grid id="59e1d" layout-manager="BorderLayout" hgap="0" vgap="0">
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="6" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<scrollpane id="7a9db" binding="scrollPane">
|
||||
<constraints border-constraint="Center"/>
|
||||
<properties>
|
||||
<verticalScrollBarPolicy value="20"/>
|
||||
</properties>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<grid id="fd78c" layout-manager="BorderLayout" hgap="0" vgap="0">
|
||||
<constraints/>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<component id="835ed" class="javax.swing.JLabel" binding="page">
|
||||
<constraints border-constraint="Center"/>
|
||||
<properties>
|
||||
<text value=""/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</children>
|
||||
</scrollpane>
|
||||
</children>
|
||||
</grid>
|
||||
<component id="73f5" class="javax.swing.JTextField" binding="indexPage">
|
||||
<constraints>
|
||||
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</form>
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* PdfPanel.java, 26/02/2022
|
||||
* IUT Rodez 2021-2022, INFO 2
|
||||
* pas de copyright, aucun droits
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package lecteur_pdf.pdf;
|
||||
@@ -11,11 +11,13 @@ import lecteur_pdf.GestionPdf;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* TODO commentaires
|
||||
* Interface de la mainframe de l'application sans utilisation de forms
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -23,79 +25,113 @@ import java.io.IOException;
|
||||
* @author Tristan Nogaret
|
||||
*/
|
||||
public class PdfPanel extends JPanel {
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
|
||||
private int currentPage;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
private float currentScale;
|
||||
private float scaleSizing;
|
||||
private float scaleZoom;
|
||||
|
||||
private boolean pleineLargeur;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
private PdfLoader pdfLoader;
|
||||
|
||||
private JButton suivantButton;
|
||||
private JButton precedentButton;
|
||||
private JLabel pageIndicator;
|
||||
private JPanel mainPanel;
|
||||
private JLabel page;
|
||||
private JScrollPane scrollPane;
|
||||
private JTextField indexPage;
|
||||
private final JTextField indexPageInput;
|
||||
private final JLabel maxPageLabel;
|
||||
|
||||
private final JScrollPane scrollPane;
|
||||
private final JViewport viewport;
|
||||
private final JLabel page;
|
||||
|
||||
private boolean processing;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public PdfPanel() {
|
||||
super();
|
||||
super(new BorderLayout());
|
||||
|
||||
this.currentScale = 1.0f;
|
||||
scaleSizing = 0.0f;
|
||||
scaleZoom = 1.0f;
|
||||
currentPage = 0;
|
||||
processing = false;
|
||||
pleineLargeur = false;
|
||||
|
||||
scrollPane.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
|
||||
/* Controls */
|
||||
JPanel controls = new JPanel();
|
||||
/* Contenu de Controls */
|
||||
JButton btnPrecedent = new JButton("Précédent");
|
||||
indexPageInput = new JTextField();
|
||||
indexPageInput.setText("-");
|
||||
maxPageLabel = new JLabel("/ -");
|
||||
JButton btnSuivant = new JButton("Suivant");
|
||||
|
||||
// TODO supprimer le form et creer les éléments 1 par 1
|
||||
controls.add(btnPrecedent);
|
||||
controls.add(indexPageInput);
|
||||
controls.add(maxPageLabel);
|
||||
controls.add(btnSuivant);
|
||||
|
||||
/* Hierarchie */
|
||||
add(mainPanel);
|
||||
add(controls, BorderLayout.PAGE_START);
|
||||
|
||||
/* View */
|
||||
page = new JLabel();
|
||||
JPanel pagePanel = new JPanel();
|
||||
/* Contenu de View */
|
||||
scrollPane = new JScrollPane(pagePanel);
|
||||
scrollPane.getVerticalScrollBar().setUnitIncrement(16);
|
||||
viewport = scrollPane.getViewport();
|
||||
|
||||
pagePanel.add(page);
|
||||
|
||||
add(scrollPane, BorderLayout.CENTER);
|
||||
|
||||
/* Actions */
|
||||
suivantButton.addActionListener(e -> {
|
||||
if (GestionMode.isModeSepare()) {
|
||||
nextPage();
|
||||
} else {
|
||||
GestionPdf.nextPages();
|
||||
}
|
||||
btnSuivant.addActionListener(e -> {
|
||||
if (GestionMode.isModeSepare()) nextPage();
|
||||
else GestionPdf.nextPages();
|
||||
});
|
||||
|
||||
precedentButton.addActionListener(e -> {
|
||||
if (GestionMode.isModeSepare()) {
|
||||
previousPage();
|
||||
} else {
|
||||
GestionPdf.previousPages();
|
||||
}
|
||||
btnPrecedent.addActionListener(e -> {
|
||||
if (GestionMode.isModeSepare()) previousPage();
|
||||
else GestionPdf.previousPages();
|
||||
});
|
||||
|
||||
indexPage.addActionListener(e -> {
|
||||
|
||||
String saisie = indexPage.getText();
|
||||
|
||||
int index = Integer.parseInt(saisie);
|
||||
|
||||
/* Si cet entier est valide on change de page sinon on efface le contenu de la saisie */
|
||||
if (isPageValide(index)) {
|
||||
setPage(index - 1);
|
||||
} else {
|
||||
indexPage.setText(null);
|
||||
indexPageInput.addActionListener(e -> {
|
||||
String saisie = indexPageInput.getText();
|
||||
try {
|
||||
int index = Integer.parseInt(saisie);
|
||||
if (isPageValide(index - 1)) setPage(index - 1);
|
||||
else throw new Exception();
|
||||
} catch (Exception f) {
|
||||
indexPageInput.setText(null);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
scrollPane.addComponentListener(new ComponentAdapter() {
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
super.componentResized(e);
|
||||
resize();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void resize() {
|
||||
if (pdfLoader != null && !processing) {
|
||||
if (pleineLargeur) {
|
||||
scaleSizing = (((float) viewport.getWidth() - (float) scrollPane.getVerticalScrollBar().getWidth()) / (float) pdfLoader.getMinWidth()) - scaleZoom;
|
||||
} else {
|
||||
scaleSizing = (((float) viewport.getHeight() - (float) scrollPane.getHorizontalScrollBar().getHeight()) / (float) pdfLoader.getMinHeight()) - scaleZoom;
|
||||
}
|
||||
updateScaleSizing(scaleSizing);
|
||||
}
|
||||
}
|
||||
|
||||
public void setPleineLargeur(boolean pleineLargeur) {
|
||||
this.pleineLargeur = pleineLargeur;
|
||||
resize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Prédicat qui vérifie si un index de page est valide pour le PDF courrant
|
||||
*
|
||||
* @param index Entier correspondant a l'indice du numéro de page à tester
|
||||
* @return true si le prédicat est vérifié, false sinon
|
||||
*/
|
||||
@@ -106,6 +142,7 @@ public class PdfPanel extends JPanel {
|
||||
|
||||
/**
|
||||
* Methode qui permet de charger un PDF dans le fenêtre courrante
|
||||
*
|
||||
* @param pdfFile Le fichier PDF à charger
|
||||
* @return true si le PDF à pu se charger, false sinon
|
||||
*/
|
||||
@@ -120,7 +157,6 @@ public class PdfPanel extends JPanel {
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param pdfLoader
|
||||
*/
|
||||
public void setPdfLoader(PdfLoader pdfLoader) {
|
||||
@@ -131,9 +167,7 @@ public class PdfPanel extends JPanel {
|
||||
* TODO
|
||||
*/
|
||||
public void dechargerPdf() {
|
||||
if (pdfLoader == null) {
|
||||
return;
|
||||
}
|
||||
if (pdfLoader == null) return;
|
||||
|
||||
/* Ferme le loader et l'efface */
|
||||
pdfLoader.close();
|
||||
@@ -144,18 +178,29 @@ public class PdfPanel extends JPanel {
|
||||
currentPage = 0;
|
||||
|
||||
/* Interface Vide */
|
||||
indexPage.setText("");
|
||||
pageIndicator.setText("/ -");
|
||||
indexPageInput.setText("");
|
||||
maxPageLabel.setText("/ -");
|
||||
|
||||
validate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Change la taille de la page courrante
|
||||
*
|
||||
* @param scale Valeur flottante (1.00f == 100%)
|
||||
*/
|
||||
public void updateScale(float scale) {
|
||||
currentScale = scale;
|
||||
public void updateScaleZoom(float scale) {
|
||||
scaleZoom = scale;
|
||||
setPage(currentPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change la taille de la page courrante
|
||||
*
|
||||
* @param scale Valeur flottante (1.00f == 100%)
|
||||
*/
|
||||
public void updateScaleSizing(float scale) {
|
||||
scaleSizing = scale;
|
||||
setPage(currentPage);
|
||||
}
|
||||
|
||||
@@ -175,19 +220,19 @@ public class PdfPanel extends JPanel {
|
||||
|
||||
/**
|
||||
* Essaye de changer de page si possible, sinon ne fait rien
|
||||
*
|
||||
* @param index Le numéro de la page où l'on veut se rendre
|
||||
*/
|
||||
private void setPage(int index) {
|
||||
if (!isPageValide(index)) return;
|
||||
|
||||
processing = true;
|
||||
try {
|
||||
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, currentScale)));
|
||||
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing)));
|
||||
currentPage = index;
|
||||
indexPage.setText(Integer.toString(currentPage +1));
|
||||
pageIndicator.setText(String.format("/%d", pdfLoader.getNbPages()));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
indexPageInput.setText(Integer.toString(currentPage + 1));
|
||||
maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages()));
|
||||
} catch (IOException ignored) {}
|
||||
processing = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* PdfPanel2.java, 26/02/2022
|
||||
* IUT Rodez 2021-2022, INFO 2
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package lecteur_pdf.pdf;
|
||||
|
||||
import lecteur_pdf.SelectionnerFichier;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Interface de la mainframe de l'application sans utilisation de forms
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
* @author Noé Villeneuve
|
||||
* @author Tristan Nogaret
|
||||
*/
|
||||
public class PdfPanel2 extends JFrame {
|
||||
|
||||
public PdfPanel2() {
|
||||
super("JScrollPaneExemple");
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
/* Controls */
|
||||
JPanel controlPanel = new JPanel();
|
||||
JButton btnPre = new JButton("Precedent");
|
||||
JTextField indexPageField = new JTextField();
|
||||
JLabel maxPagesLabel = new JLabel("/ -");
|
||||
JButton btnSuiv = new JButton("Suivant");
|
||||
|
||||
controlPanel.add(btnPre);
|
||||
controlPanel.add(indexPageField);
|
||||
controlPanel.add(maxPagesLabel);
|
||||
controlPanel.add(btnSuiv);
|
||||
|
||||
/* Vue */
|
||||
JPanel view = null;
|
||||
try {
|
||||
PdfLoader pdfLoader = new PdfLoader(SelectionnerFichier.ouvrirFichier());
|
||||
|
||||
ImageIcon image = new ImageIcon(pdfLoader.renderPage(0, 1.0f));
|
||||
JLabel pimage = new JLabel();
|
||||
pimage.setIcon(image);
|
||||
|
||||
view = new JPanel();
|
||||
view.add(pimage);
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
JPanel main = new JPanel(new BorderLayout());
|
||||
main.add(controlPanel, BorderLayout.PAGE_START);
|
||||
JScrollPane jsp = new JScrollPane(view);
|
||||
main.add(jsp, BorderLayout.CENTER);
|
||||
|
||||
add(main);
|
||||
|
||||
setLocationRelativeTo(null);
|
||||
setVisible(true);
|
||||
setSize(300, 300);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new PdfPanel2();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user