2015-04-16 2 views
2

Это код, который я сделал для декодирования файла TIFF с 24-Bit ....Extra нажмите, чтобы перемещаться между страницами в JFrame

package decoding.tiff; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.image.BufferedImage; 
import java.awt.image.DataBufferInt; 
import java.io.RandomAccessFile; 
import java.util.ArrayList; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JScrollPane; 

public class TiffMultiPage24Bit extends javax.swing.JFrame implements 
     ActionListener { 

    private static final long serialVersionUID = -4935096415846083312L; 

    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JButton jLabel1; 
    JScrollPane logScrollPane; 

    static ArrayList<BufferedImage> images = new ArrayList<BufferedImage>(); 
    static int count = 0; 
    static int minvalue = -1; 
    static int totalimages = 0; 

    public TiffMultiPage24Bit() { 
     initComponents(); 

     jButton1.addActionListener(this); 
     jButton2.addActionListener(this); 

    } 

    private void initComponents() { 
//Code for frame view 
    } 

    @SuppressWarnings({ "resource", "unused" }) 
    public static void main(String args[]) throws Throwable { 


     { 

     //Code for image decoding 

      images.add(buff); // adding the image to array list 

     } 

     totalimages = images.size(); 

     TiffMultiPage24Bit mp = new TiffMultiPage24Bit(); 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new TiffMultiPage24Bit().setVisible(true); 
      } 
     }); 

    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == jButton1) { 
      count--; 
      if (count > minvalue) { 
       jLabel1.setIcon(new ImageIcon(images.get(count))); 
      } else { 
       JOptionPane.showMessageDialog(null, "No Previous Image"); 
      } 
     } 

     if (e.getSource() == jButton2) { 
      count++; 
      if (count < totalimages) { 
       jLabel1.setIcon(new ImageIcon(images.get(count))); 
      } else { 
       JOptionPane.showMessageDialog(null, "No Next Image"); 
      } 
     } 

    } 

} 

Когда я в первый раз, например нажмите кнопку Далее он работает отлично. ...

Но после того, как он перейдет на последнюю страницу, для возврата на предыдущую страницу потребуется два щелчка. И один раз, когда он идет на первую страницу, для перехода на следующую страницу требуется два щелчка. ..

, пожалуйста, помогите ... любая помощь будет оценена ...

ответ

0

Вам нужно отдохнуть count назад до максимально допустимого значения, когда он является недействительным

Подумайте об этом, как это ...

  • Вы щелкаете следующий
  • count увеличивается
  • count> = totalimages, показать сообщение об ошибке (count теперь равно (не менее) totalimages
  • Нажмите предыдущий
  • count декрементируется и теперь равна totalimages - 1, который является последним (и ток) изображение ...

count Каждый раз, является недействительным, вам нужно сбросить его обратно в это допустимый диапазон ...

if (e.getSource() == jButton1) { 
    count--; 
    if (count > minvalue) { 
     //... 
    } else { 
     count = minvalue; 
     //... 
    } 
} else if (e.getSource() == jButton2) { 
    count++; 
    if (count < totalimages) { 
     //... 
    } else { 
     count = totalimages - 1; 
     //... 
    } 
} 

в качестве примера

самое замечательное в том, как вы должны это прямо сейчас, я мог бы сохранить, нажав кнопку «Далее» и сохранить увеличиваем значение count ... Это может быть даже стоит отключить кнопки, когда count достигает верхнего или нижнего предела ...

+1

Спасибо большое оценил .... – CoderNeji

+0

Рад, что это может помочь – MadProgrammer

0

В качестве альтернативы ... я изменил его, как это в моем коде .....

public void actionPerformed(ActionEvent e) { 

    if (e.getSource() == jButton1) { 
     count--; 
     if(count==minvalue || count<minvalue) 
     { 
      JOptionPane.showMessageDialog(null, "No Previous Image"); 
      count=minvalue+1; 
     } 
     if (count > minvalue && count < totalimages) { 
      jLabel1.setIcon(new ImageIcon(images.get(count))); 
     } 
    } 

    if (e.getSource() == jButton2) { 
     count++; 
     if(count==totalimages || count >totalimages) 
     { 
      count=totalimages-1; 

      JOptionPane.showMessageDialog(null, "No Next Image"); 
     } 
     if (count < totalimages && count > minvalue) { 
      jLabel1.setIcon(new ImageIcon(images.get(count))); 
     } 
    } 
} 
Смежные вопросы