簡體   English   中英

額外單擊即可在Jframe中的頁面之間導航

[英]Extra click to navigate between pages in Jframe

這是我為解碼24位tiff文件而編寫的代碼。

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");
            }
        }

    }

}

當我第一次單擊“ next”時,它工作正常。

但是一旦轉到最后一頁,則需要兩次單擊才能返回到上一頁....而轉到第一頁時,則需要單擊兩次以轉到下一頁。...

請幫助...。任何幫助將不勝感激...

count無效時,您需要將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達到上限或下限時,甚至可能值得禁用按鈕...

或者...我在代碼中這樣更改它.....

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)));
        } 
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM