import java.awt.Dimension;  
import java.awt.HeadlessException;
import java.awt.Point; 
import java.awt.event.ActionListener; 
import java.awt.event.ComponentAdapter; 
import java.awt.event.ComponentEvent; 
import java.awt.Color;
import java.awt.Font;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.*;
import javax.imageio.*;
import javax.imageio.stream.*; public class JFrameTest6 extends JFrame implements ActionListener
 {

private boolean f;
JFrameTest7A frame; 
  JFrameTest6()
  
  {
   JButton openbutton=new JButton("OpenFile");
   
openbutton.addActionListener(this);
JPanel p=new JPanel();
p.add(openbutton);
  
getContentPane().add(p, BorderLayout.CENTER);
f = false;
   
  }
 
  public static void main(String[] args)
  {
    JFrameTest6 frame = new JFrameTest6();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("sousennha");
frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
  public void actionPerformed(ActionEvent e)
  {
  
   JFileChooser filechooser = new JFileChooser();
    filechooser.setMultiSelectionEnabled(true);
    int selected = filechooser.showDialog(JFrameTest6.this,"Select Image File");

if (selected == JFileChooser.APPROVE_OPTION)
{   
if(f == false)
{
     frame =new JFrameTest7A();
f = true;
}
    
      File[] files = filechooser.getSelectedFiles();
 
frame.addFile(files);

}
 
 
  }
  
}
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
import java.awt.Dimension;  
import java.awt.HeadlessException;
import java.awt.Point; 
import java.awt.event.ActionListener; 
import java.awt.event.ComponentAdapter; 
import java.awt.event.ComponentEvent; 
import java.awt.Color;
import java.awt.Font;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.*;
import javax.imageio.*;
import javax.imageio.stream.*;
 public class JFrameTest7A  extends JFrame
  {
   private  Timer timer;
private JViewport window; 
private  JPanel view; 
private  File[] files;
private  Icon[] icons;
private  Point anchor;    JFrameTest7A()

anchor = new Point(); 
view = new JPanel();
  window = new JViewport(); 
  window.setView(view);
  getContentPane().add(window);

addComponentListener(new ComponentAdapter()
  { 
 
public void componentResized(ComponentEvent e) 


anchor.x = 0;
anchor.x = -window.getExtentSize().width; 
window.setViewPosition(anchor); 

}
); 

timer = new Timer(50, new ActionListener()

   { 
public void actionPerformed(ActionEvent e) 


animate(); 

   }
); 

timer.setInitialDelay(0);


setBounds(5, 10, 1280, 650);
        setTitle("ImageView");
timer.start(); 
}
private void animate() 

Dimension extSize = window.getExtentSize(); 
Dimension viewSize = view.getPreferredSize(); 
anchor.x += 4;
window.setViewPosition(anchor); 
if (anchor.x > viewSize.width) 
     anchor.x = -extSize.width; 
}  public void addFile(File[] files)
{

for(int count = 0; count < files.length; count++)
{
ImageIcon icon = new ImageIcon(files[count].getAbsolutePath());
JLabel label = new JLabel(icon);
label.setBackground(Color.RED);

view.add(label); 

}
setVisible(true);
}

  } 

解决方案 »

  1.   


    问题补充说明你看的我发的一段代码实现功能本来是单击openfile按钮打开任意一张图像文件后会在一个新的对话框中显示被打开图像从右边界缓缓出现一直滚动到左边界直到最后一张图像不可见位置,然后在从右边界出来这样循环的运行,
    在运行中可以再次点击openfile按钮此时打开的图像文件将自动的添加到现有滚动图像的尾部实现滚动。
    可现在存在的问题为 当打开一张(或多张)时没有从右边界出来而是在中间出来的,并且界面显示的是你打开的图像文件出现两次中间为空白。但是滚动一圈以后就正常了,
    这个问题该如何修改很是迷惑
      

  2.   


    问题补充
    在JDK1.5下正常但是当原有的图像循环滚动的时候最后一张图像在滚动到左边瞬间在添加新的图像就会出现问题
    在jdk1.6下就会出现上面所有的图像多余部分并带有空白部分
      

  3.   

    window.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);