Java tutorial
import java.io.IOException; import com.itextpdf.text.pdf.*; import com.itextpdf.text.pdf.parser.PdfTextExtractor; import java.awt.Window; import java.util.ArrayList; import java.util.List; import javax.swing.DefaultListModel; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.ListModel; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * * @author pgdswd */ public class Reader extends javax.swing.JFrame { ArrayList bookNames = new ArrayList(); String fileName = ""; int currentPageNum = 0; /** * Creates new form Reader */ public Reader() { initComponents(); setLocationRelativeTo(null); setTitle("E-reader"); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jDialog1 = new javax.swing.JDialog(); jDialog2 = new javax.swing.JDialog(); jFileChooser1 = new javax.swing.JFileChooser(); jSeparator1 = new javax.swing.JSeparator(); jScrollPane1 = new javax.swing.JScrollPane(); pageContentPane = new javax.swing.JTextPane(); jSeparator2 = new javax.swing.JSeparator(); jSeparator3 = new javax.swing.JSeparator(); jLabel1 = new javax.swing.JLabel(); previousButton = new javax.swing.JButton(); nextButton = new javax.swing.JButton(); bookComboBox = new javax.swing.JComboBox(); addBookButton = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); exitMenuItem = new javax.swing.JMenuItem(); javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane()); jDialog1.getContentPane().setLayout(jDialog1Layout); jDialog1Layout.setHorizontalGroup(jDialog1Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE)); jDialog1Layout.setVerticalGroup(jDialog1Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE)); javax.swing.GroupLayout jDialog2Layout = new javax.swing.GroupLayout(jDialog2.getContentPane()); jDialog2.getContentPane().setLayout(jDialog2Layout); jDialog2Layout.setHorizontalGroup(jDialog2Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE)); jDialog2Layout.setVerticalGroup(jDialog2Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE)); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setResizable(false); jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL); pageContentPane.setEditable(false); jScrollPane1.setViewportView(pageContentPane); jLabel1.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N jLabel1.setText("Library"); previousButton.setText("previous "); previousButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { previousButtonActionPerformed(evt); } }); nextButton.setText("next "); nextButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { nextButtonActionPerformed(evt); } }); bookComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "C:\\Users\\Koketso\\Documents\\NetBeansProjects\\Ereader\\src\\english assesment.pdf" })); bookComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bookComboBoxActionPerformed(evt); } }); addBookButton.setText("add book"); addBookButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { addBookButtonActionPerformed(evt); } }); jButton1.setText("add book"); jMenu1.setText("File"); exitMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0)); exitMenuItem.setText("Exit"); exitMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitMenuItemActionPerformed(evt); } }); jMenu1.add(exitMenuItem); jMenuBar1.add(jMenu1); setJMenuBar(jMenuBar1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSeparator3) .addGroup(layout.createSequentialGroup().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(bookComboBox, javax.swing.GroupLayout.Alignment.TRAILING, 0, 0, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup().addGap(54, 54, 54).addComponent(jLabel1))) .addGap(0, 0, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 538, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup().addGap(128, 128, 128) .addComponent(previousButton).addGap(68, 68, 68).addComponent(nextButton) .addGap(40, 40, 40).addComponent(addBookButton).addGap(44, 44, 44) .addComponent(jButton1))) .addGap(121, 121, 121))); layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGap(19, 19, 19) .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(previousButton).addComponent(nextButton) .addComponent(addBookButton, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 402, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup( layout.createSequentialGroup().addComponent(jSeparator1).addGap(39, 39, 39)) .addGroup(layout.createSequentialGroup().addComponent(jLabel1).addGap(26, 26, 26) .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(bookComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(395, Short.MAX_VALUE))))); pack(); }// </editor-fold>//GEN-END:initComponents private void previousButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_previousButtonActionPerformed try { previousPage(); } catch (IOException ex) { JOptionPane.showMessageDialog(pageContentPane, "No file is found"); pageContentPane.setText(""); } }//GEN-LAST:event_previousButtonActionPerformed private void bookComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bookComboBoxActionPerformed fileName = bookComboBox.getSelectedItem().toString(); try { showPdf(fileName); } catch (IOException ex) { //JOptionPane.showMessageDialog(pageContentPane, "No file is found"); pageContentPane.setText(""); } }//GEN-LAST:event_bookComboBoxActionPerformed // displays a page private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextButtonActionPerformed try { nextPage(); } catch (IOException ex) { JOptionPane.showMessageDialog(pageContentPane, "No file is found"); pageContentPane.setText(""); } }//GEN-LAST:event_nextButtonActionPerformed private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed System.exit(0); }//GEN-LAST:event_exitMenuItemActionPerformed private void addBookButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addBookButtonActionPerformed JFileChooser fc = new JFileChooser(); String name = ""; name = JOptionPane.showInputDialog("Enter the name of the file"); bookComboBox.addItem(name); }//GEN-LAST:event_addBookButtonActionPerformed // displays the first page public void showPdf(String s) throws IOException { bookNames.add(s); PdfReader pr = new PdfReader(s); String content = PdfTextExtractor.getTextFromPage(pr, 1); currentPageNum = 1; pageContentPane.setText(content); } //displays the next page public void nextPage() throws IOException { PdfReader pr = new PdfReader(fileName); //increment current page if there is one more page to read if (currentPageNum < pr.getNumberOfPages()) { ++currentPageNum; String content = PdfTextExtractor.getTextFromPage(pr, currentPageNum); //go to the next page pageContentPane.setText(content); } else { String content = PdfTextExtractor.getTextFromPage(pr, currentPageNum); //show the last page pageContentPane.setText(content); } } // displays the previous page public void previousPage() throws IOException { PdfReader pr = new PdfReader(fileName); //decrement current page if it is not the first page if (currentPageNum <= pr.getNumberOfPages() && currentPageNum != 1) { --currentPageNum; String content = PdfTextExtractor.getTextFromPage(pr, currentPageNum); //go to the previous page pageContentPane.setText(content); } else { String content = PdfTextExtractor.getTextFromPage(pr, currentPageNum); //show the last page pageContentPane.setText(content); } } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(Reader.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(Reader.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(Reader.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Reader.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Reader().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addBookButton; private javax.swing.JComboBox bookComboBox; private javax.swing.JMenuItem exitMenuItem; private javax.swing.JButton jButton1; private javax.swing.JDialog jDialog1; private javax.swing.JDialog jDialog2; private javax.swing.JFileChooser jFileChooser1; private javax.swing.JLabel jLabel1; private javax.swing.JMenu jMenu1; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JButton nextButton; private javax.swing.JTextPane pageContentPane; private javax.swing.JButton previousButton; // End of variables declaration//GEN-END:variables }