我实际上是在尝试使用 Java 制作一个简单的图像查看器。它包括一个标签和三个按钮。其中两个按钮用作导航的左右箭头键,第三个是用于选择目录的打开按钮。但是,当我单击打开时,只会查看第一个 JPG 图像,并且该图像太未缩放。如果我单击前进按钮,则不会发生导航。
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.io.*;
public class picframe extends Thread implements ActionListener
{
JTree tr;
JScrollPane jsp;
JFrame f;
JButton b1,b2,b3;
JLabel lab;
File fl;
File[] flist;
ImageIcon ig;
int k,j=0;
FileDialog fdial;
String str;
picframe()
{
f=new JFrame("My Frame");
f.setVisible(true);
f.setLayout(null);
lab=new JLabel();
lab.setBounds(100,50,1166,500);
f.add(lab);
b1=new JButton(" <| ");
b1.setBounds(486,600,100,30);
b1.setEnabled(false);
f.add(b1);
b1.addActionListener(this);
b2=new JButton(" |> ");
b2.setBounds(786,600,100,30);
f.add(b2);
b2.setEnabled(false);
b2.addActionListener(this);
b3=new JButton("Open");
b3.setBounds(633,650,100,30);
f.add(b3);
b3.addActionListener(this);
f.pack();
f.setSize(1366,768);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("Open"))
{
FileDialog fdial=new FileDialog(f,"Open Box",FileDialog.LOAD);
fdial.setSize(300,300);
fdial.setVisible(true);
str=fdial.getDirectory();
fl=new File(str);
flist=fl.listFiles();
b2.setEnabled(true);
rat:while(j<flist.length)
{
if(flist[j].isFile())
{
if(flist[j].getName().toLowerCase().endsWith(".jpg"))
{
ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
lab.setIcon(ig);
break rat;
}
}
j++;
}
}
if(ae.getActionCommand().equals("<|"))
{
--j;
if(j+1!=0)
{
bat:while(j<flist.length)
{
if(flist[j].isFile())
{
if(flist[j].getName().toLowerCase().endsWith(".jpg"))
{
ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
lab.setIcon(ig);
b1.setEnabled(true);
break bat;
}
}
j--;
}
}
if(j<0 || !flist[j].isFile())
{
lab.setText("no image");
}
if(ae.getActionCommand().equals("|>"))
{
++j;
if(j-1!=flist.length)
{
cat:while(j<flist.length)
{
if(flist[j].isFile())
{
if(flist[j].getName().toLowerCase().endsWith(".jpg"))
{
ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
lab.setIcon(ig);
b1.setEnabled(true);
break cat;
}
}
j++;
}
}
if(j>flist.length || !flist[j].isFile())
{
lab.setText("no image");
}
}
}
}
public static void main(String args[])
{
new picframe();
}
}