mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-05-14 01:21:50 +00:00
ce255b75f7
-Défilement des documents en mode séparé et synchonisé avec les touches "l" et "m".
-Désactivation du bouton "nouvelle fenêtre" quand on a atteint le nombre max de fenêtre ouvertes. (besoin de le griser car actuellement il se désactive mais aucun changement visible)
- Besoin de rajouter des ✅ pour montrer quel mode est sélectionné.
87 lines
2.3 KiB
Java
87 lines
2.3 KiB
Java
package lecteur_pdf.pdf;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
public class PdfPanel extends JPanel {
|
|
private int currentPage;
|
|
private float currentScale;
|
|
|
|
final PdfLoader pdfLoader;
|
|
|
|
private JButton suivantButton;
|
|
private JButton precedentButton;
|
|
private JLabel pageIndicator;
|
|
private JPanel mainPanel;
|
|
private JLabel page;
|
|
private JScrollPane scrollPane;
|
|
private JTextField indexPage;
|
|
|
|
public PdfPanel(File pdfFile) throws IOException {
|
|
super();
|
|
|
|
this.currentScale = 1.0f;
|
|
|
|
scrollPane.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
|
|
/* Définitions des arguments */
|
|
pdfLoader = new PdfLoader(pdfFile);
|
|
|
|
if (pdfFile != null) {
|
|
defaultPage();
|
|
|
|
/* Hierarchie */
|
|
add(mainPanel);
|
|
|
|
/* Actions */
|
|
suivantButton.addActionListener(e -> nextPage());
|
|
precedentButton.addActionListener(e -> previousPage());
|
|
indexPage.addActionListener(e -> updatePageInput());
|
|
}
|
|
|
|
}
|
|
|
|
public void updateScale(float scale) {
|
|
this.currentScale = scale;
|
|
updatePage(currentPage);
|
|
}
|
|
|
|
private void defaultPage() {
|
|
updatePage(0);
|
|
}
|
|
|
|
public void nextPage() {
|
|
updatePage(currentPage + 1);
|
|
}
|
|
|
|
public void previousPage() {
|
|
updatePage(currentPage - 1);
|
|
}
|
|
|
|
public void updatePage(int index) {
|
|
try {
|
|
if (pdfLoader == null) throw new IllegalStateException();
|
|
page.setIcon(new ImageIcon(pdfLoader.renderPage(index,
|
|
currentScale)));
|
|
currentPage = index;
|
|
pageIndicator.setText(String.format("%d/%d", currentPage + 1,
|
|
pdfLoader.getNbPages()));
|
|
} catch (IOException | IllegalArgumentException | IllegalStateException ignored) {}
|
|
}
|
|
|
|
public void updatePageInput() {
|
|
String input = indexPage.getText();
|
|
try {
|
|
int index = Integer.parseInt(input);
|
|
if (index > 0 && index <= pdfLoader.getNbPages()) {
|
|
updatePage(index - 1);
|
|
} else {
|
|
throw new Exception();
|
|
}
|
|
} catch (Exception e) {
|
|
indexPage.setText("");
|
|
}
|
|
}
|
|
}
|