请教大神,怎么实现按查询按钮,然后相应地址下的图片利用ImagePanel把图片画在panel里。import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.*;
import java.io.*;
import java.sql.ResultSet;import javax.swing.*;
 public class ImageViewerServer extends JFrame{
 
JLabel l_id = new JLabel("编号:");
JLabel l_name = new JLabel("名称:");
JLabel l_filePath = new JLabel("路径:");
JLabel l_size = new JLabel("大小:");
JLabel l_type = new JLabel("种类:");
JLabel l_time = new JLabel("时间:");
JTextField id = new JTextField(10);
JTextField name = new JTextField(10);
JTextField filePath = new JTextField(10);
JTextField size = new JTextField(10);
JTextField type = new JTextField(10);
JTextField time = new JTextField(10);
JButton b_query = new JButton("查询");
JButton b_del = new JButton("删除");
JButton b_update = new JButton("更新");
JButton b_add = new JButton("增加");
JButton b_before = new JButton("上一个");
JButton b_next = new JButton("下一个");
JButton b_select = new JButton("选择目录");

ResultSet rst = null;
     private ImagePanel mv;
//private ImageViewer1 outer=this;
public ImageViewerServer() {
super("Image Viewer 1.1");

mv = new ImagePanel();
Panel p1 = new Panel();
Panel p2 = new Panel(); p1.add(l_id);
p1.add(id);
p1.add(l_name);
p1.add(name);
p1.add(l_filePath);
p1.add(filePath);
p1.add(l_size);
p1.add(size);
p1.add(l_type);
p1.add(type);
p1.add(l_time);
p1.add(time);
p2.add(b_select);
p2.add(b_query);
p2.add(b_del);
p2.add(b_update); 
p2.add(b_add);
p2.add(b_before);
p2.add(b_next);




add(mv,BorderLayout.CENTER);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.SOUTH);

//setLayout(new FlowLayout(FlowLayout.CENTER));

b_query.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b_query) {
 
try {
rst = SqlDB.execQuery("select * from inf where id='"+id.getText().trim()+"'");
if(rst.next()) {
name.setText(rst.getString(2));
filePath.setText(rst.getString(3));
size.setText(rst.getString(4));
type.setText(rst.getString(5));
time.setText(rst.getString(6));
System.out.println("已查询");
}

} catch(Exception ex) {
System.out.println(ex.getMessage());
}
}

}

});

b_add.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b_add) {
try {
SqlDB.execUpdate("insert into inf values('"+
                    id.getText().trim()+"','"+
        name.getText().trim()+"','"+
        filePath.getText().trim()+"','"+
        size.getText().trim()+"','"+
        type.getText().trim()+"','"+
        time.getText().trim()+"')");
System.out.println("insert into inf values('"+
                    id.getText().trim()+"','"+
        name.getText().trim()+"','"+
        filePath.getText().trim()+"','"+
        size.getText().trim()+"','"+
        type.getText().trim()+"','"+
        time.getText().trim()+"')");
} catch(Exception ex) {
System.out.println(ex.getMessage());
}
}
}

});


b_update.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b_update) {
try {
SqlDB.execUpdate("update inf set name='" + 
                    name.getText().trim()+
                    "' where id='" +id.getText().trim()+"'");  
System.out.println("已更新");
} catch(Exception ex) {
System.out.println(ex.getMessage());
}

}
}

});

b_del.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b_del) {
SqlDB.execUpdate("delete from inf" + 
                     " where id='"+id.getText().trim()+"'");
String fileName = "D:/temp/"+GetDate.getDate()+"_SJ"+id.getText().trim()+".jpg";
System.out.println("D:/temp/"+GetDate.getDate()+"_SJ"+id.getText().trim()+".jpg");
System.out.println(id.getText().trim());
File file = new File(fileName );
file.delete();
System.out.println("已删除");
}
}

});


b_next.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b_next) {
b_next.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

mv.setCurrent(mv.getCurrent()-1);
mv.repaint();
}
});
try {
rst = SqlDB.execQuery("select * from inf where id='"+ (Integer.parseInt(id.getText().trim())+1)+"'");
System.out.println("select * from inf where id='"+ (Integer.parseInt(id.getText().trim())+1)+"'");
if(rst.next()) {
id.setText(rst.getString(1));
name.setText(rst.getString(2));
filePath.setText(rst.getString(3));
size.setText(rst.getString(4));
type.setText(rst.getString(5));
time.setText(rst.getString(6));
System.out.println("下一条");
}
} catch(Exception ex) {
System.out.println(ex.getMessage());
}finally {
SqlDB.closeDB();
}
}
}
});

b_before.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b_before) {
b_before.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
mv.setCurrent(mv.getCurrent()+1);
mv.repaint();
}
});
try {
rst = SqlDB.execQuery("select * from inf where id='"+ (Integer.parseInt(id.getText().trim())-1)+"'");
System.out.println("select * from inf where id='"+ (Integer.parseInt(id.getText().trim())-1)+"'");
if(rst.next()) {
id.setText(rst.getString(1));
name.setText(rst.getString(2));
filePath.setText(rst.getString(3));
size.setText(rst.getString(4));
type.setText(rst.getString(5));
time.setText(rst.getString(6));
System.out.println("上一条");
}
} catch(Exception ex) {
System.out.println(ex.getMessage());
}finally {
SqlDB.closeDB();
}
}
}
});

b_select.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                int returnValue = fileChooser.showOpenDialog(null);
                File selectedFile=null;
                
                if(returnValue==JFileChooser.APPROVE_OPTION) {
                 selectedFile=fileChooser.getSelectedFile();
                }                if(selectedFile.isDirectory()){
                 mv.changDir(selectedFile);
                } else {
                 File parentdir=selectedFile.getParentFile();
                 mv.changDir(parentdir,selectedFile);
                }                
}
});

}




public static void main(String[] args) {
ImageViewerServer myapp = new ImageViewerServer();
myapp.setSize(1000,600);
myapp.setVisible(true);
myapp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}

解决方案 »

  1.   

    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.io.File;
    import javax.swing.JPanel;
    @SuppressWarnings("serial")
    public class ImagePanel extends JPanel {

    private Image img;
    private String imageFiles[];
    private int current=0;
    private int counts=0;
    private File imageDir=null;
    Toolkit mytool = Toolkit.getDefaultToolkit();

    public ImagePanel() {
    imageDir = new File(".");
    changDir(imageDir);
    }

    public void changDir(File imageDir) {
    current=0;
    counts=0;
    this.imageDir=imageDir;
    String[] filenames=imageDir.list();
    for(int i=0;i<filenames.length;i++) {
    if(  filenames[i].toLowerCase().endsWith(".jpg")||filenames[i].toLowerCase().endsWith(".jpg")
       ||filenames[i].toLowerCase().endsWith(".jpeg")||filenames[i].toLowerCase().endsWith(".tiff")
       ||filenames[i].toLowerCase().endsWith(".png")||filenames[i].toLowerCase().endsWith(".tif"))
    counts++;
    else
    filenames[i]=null;
    }
    imageFiles=new String[counts];
    for(int i=0,j=0;i<filenames.length;i++) {
    if(filenames[i]!=null) {
    imageFiles[j]=imageDir.getAbsolutePath()+"\\"+filenames[i];
    j++;
    }
    }
    repaint();
    } public void changDir(File imageDir, File selectedFile) {
    this.imageDir=imageDir;
    counts=0;
    current=0;
    String[] filenames = imageDir.list();
    String selectedfilename = selectedFile.getName();
    for(int i=0;i<filenames.length;i++) {
    if(  filenames[i].toLowerCase().endsWith(".jpg")||filenames[i].toLowerCase().endsWith(".jpg")
       ||filenames[i].toLowerCase().endsWith(".jpeg")||filenames[i].toLowerCase().endsWith(".tiff")
       ||filenames[i].toLowerCase().endsWith(".png")||filenames[i].toLowerCase().endsWith(".tif")) {
    counts++;
    if(filenames[i].equals(selectedfilename)) current=counts;
    }
    else {
    filenames[i]=null;
    }
    }
    System.out.println(filenames+","+filenames.length);
    System.out.println("counts="+counts);
    System.out.println(imageDir);
    imageFiles=new String[counts];
    for(int i=0,j=0;i<filenames.length;i++) {
    if(filenames[i]!=null) {
    imageFiles[j]=imageDir.getAbsolutePath()+"\\"+filenames[i];
    j++;
    }
    }
    repaint();
    } public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if(counts==0) {
    g.drawString("no image file", 20,20);
    }
    else {
    img=mytool.getImage(imageFiles[current]);
    g.drawImage(img,0,0,getSize().width,getSize().height,this);
    }

    }
    public int getCurrent() {
    return current;
    }

    public void setCurrent(int a) {
    if(a>=0&&a<counts) current = a;
    else if(a<0) current=0;
    else current=counts-1;
    }
    public String getCurrentPath(){
    return imageFiles[current];
    }}
      

  2.   

    代码选中就能看清了。请教各位大神,怎么实现按查询按钮,然后相应地址下的图片利用ImagePanel把图片画在panel里。
      

  3.   

                                          
    ImageIcon imageIcon = new ImageIcon("c:\\123.jpg");
    imageLabel.setIcon(imageIcon);// 设置图片到GUI上