如何更新Applet中的图像

时间:2014-11-05 12:38:35

标签: java image applet

如何获取java applet以从指定路径搜索图像。我想制作一个简单的imageviewer applet,它有2个按钮NEXT,PREV。单击“下一步”,它应该显示下一个图像,单击“上一步”,它应该显示上一张图像。 我编写了以下代码。请帮我编写updatenext()和updateprev()函数的代码。

 public class pic extends Applet implements ActionListener 
 {
   Button prev,next;
   private static final String PREV="Previous";
   private static final String NEXT="Next";
   Image img;

   public void init()
   {
     img=getImage(getCodeBase(),"image1.jpg");
     prev = new Button();
     prev.setLabel(PREV);
     prev.setActionCommand(PREV);
     prev.addActionListener(this);
     add(prev);
     next = new Button();
     next.setLabel(NEXT);
     next.setActionCommand(NEXT);
     next.addActionListener(this);
     add(next);
   }

   public void paint(Graphics g)
   {
     g.drawImage(img,0,0,600,700,this);
   }

   public void actionPerformed(ActionEvent e)
   {
     if(e.getActionCommand().equals(NEXT))
     updatenext();

     else if(e.getActionCommand().equals(PREV))
     updateprev();
   }

   void updatenext()
   {
    //updateImagehere
   }

   void updateprev()
   {
    //updateimage here
    repaint();
   }
}

2 个答案:

答案 0 :(得分:0)

这是一个非常简单的例子。

import java.applet.*; 
import java.awt.*; 

public class AppletImage extends Applet{
   Image img;
   MediaTracker tr;
   public void paint(Graphics g) {
      tr = new MediaTracker(this);
      img = getImage(getCodeBase(), "demoimg.gif");
      tr.addImage(img,0);
      g.drawImage(img, 0, 0, this);
   }
 public static void main(String args[]){
    AppletImage appletImage = new AppletImage();
    appletImage.setVisible(true);

}

}

尝试这个,你可以根据自己拍摄图像。

答案 1 :(得分:-1)

如果要获取applet位置中的文件列表,可以使用以下命令创建当前目录的File对象:

File currentDir = new File(getCodeBase().getPath());

然后迭代调用文件:

for (File file : currentDir.listFiles()) {
    // do something with the file
}

您需要过滤掉目录和非图像文件,我建议您在调用listFiles()时使用FileNameFilter作为参数。

编辑:

以下是您可以使用此方法的解决方案示例:

public class pic extends Applet implements ActionListener
{
Button prev, next;
private static final String PREV = "Previous";
private static final String NEXT = "Next";
Image img;
private File[] imageFiles;
private int currentIndex = 0;

public void init()
{
    File baseDir = new File(getCodeBase().getPath());
    imageFiles = baseDir.listFiles(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            String image = ".*\\.(png|jpg|jpeg|gif)";
            Pattern pattern = Pattern.compile(image);
            Matcher matcher = pattern.matcher(name.toLowerCase());
            return matcher.matches();
        }
    });
    setImage();
    prev = new Button();
    prev.setLabel(PREV);
    prev.setActionCommand(PREV);
    prev.addActionListener(this);
    add(prev);

    next = new Button();
    next.setLabel(NEXT);
    next.setActionCommand(NEXT);
    next.addActionListener(this);
    add(next);
}

public void paint(Graphics g)
{
    g.drawImage(img, 0, 0, 600, 700, this);
}

public void actionPerformed(ActionEvent e)
{
    if (e.getActionCommand().equals(NEXT))
        updatenext();
    else if (e.getActionCommand().equals(PREV))
        updateprev();
}

private void setImage() {
    img = getImage(getCodeBase(), imageFiles[currentIndex].getName());
}

void updatenext()
{
    // needs circular increment
    if (currentIndex == imageFiles.length - 1) {
        currentIndex = 0;
    } else {
        currentIndex++;
    }
    setImage();
    repaint();
}

void updateprev()
{
    // needs circular decrement
    if (currentIndex == 0) {
        currentIndex = imageFiles.length-1;
    } else {
        currentIndex--;
    }
    setImage();
    repaint();
}

}

相关问题