Have a simple Image browser
[imagelist.txt]
jht.gif|JAVA How-to
jsht.gif|Javascript How-to
pht.gif|PowerBuilder How-to
 
[application version]
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;public class ImageBrowser {
  public static void main(String s[]) {
    AFrame f = new AFrame();
    }
 }
 
 class AFrame extends Frame implements ActionListener {
   List lbx;
   MyCanvas can;
   String url[] = new String[50];
   
   public AFrame() {
     setTitle("Image selection, double click to display");
     setLayout(new GridLayout(1,2));
     setSize(800,600);
     lbx = new List();
     can = new MyCanvas();
     add(lbx); add(can);
     initLbx();
     // action on listbox double click
     lbx.addActionListener(this);
     // to close the Frame
     addWindowListener
       (new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
           System.exit(0);
           }
         }
       );
     setVisible(true);  
     }
     
   public void actionPerformed (ActionEvent ae) {
     String theUrl = url[lbx.getSelectedIndex()];
     MediaTracker media = new MediaTracker(this);
     Image image = 
        Toolkit.getDefaultToolkit().getImage(theUrl);
     media.addImage(image, 0);
     try {
       media.waitForID(0);  
       can.setImage(image);
       }
     catch (Exception e) { e.printStacktrace();}
     }
   
   public void initLbx() {
     int i = 0;
     try {
       String aLine = "";
       BufferedReader in
         = new BufferedReader(new FileReader("imagelist.txt"));
       while(null != (aLine = in.readLine())) {
          java.util.StringTokenizer st = 
             new java.util.StringTokenizer(aLine, "|");
         url[i++] = st.nextToken();
         // lbx.addItem(st.nextToken());         
         lbx.add(st.nextToken());
         }
       }
     catch(Exception e) { e.printStackTrace();}
     }
  }class MyCanvas extends Canvas {
  private Image image;
  public MyCanvas() {
    super();
    }  public void setImage(Image i) {
    image = i;
    repaint();
    }  public void paint(Graphics g) {
    if (image != null)
       g.drawImage(image, 0,0, this);
    }
}
 
NOTE : You can download this example here 
[applet version]
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;public class ImageBrowserApplet extends Applet {
  public void init() {  
    APanel p = new APanel(this);
    setLayout(new BorderLayout());
    add(p, "Center");
    }
 }
 
 class APanel extends Panel implements ActionListener {
   private List lbx;
   private MyCanvas can;
   private Applet parent = null;
   private String url[] = new String[50];
   
   public APanel(Applet a) {
     parent = a;
     setLayout(new GridLayout(1,2));
     lbx = new List();
     can = new MyCanvas();
     add(lbx); add(can);
     initLbx();
     // action on listbox double click
     lbx.addActionListener(this);
     setBackground(new Color(0).white);
     }
     
   public void actionPerformed (ActionEvent ae) {
     try {
       URL theUrl = 
         new URL(parent.getCodeBase(), url[lbx.getSelectedIndex()]);
       MediaTracker media = new MediaTracker(this);
       Image image = 
         Toolkit.getDefaultToolkit().getImage(theUrl);
       media.addImage(image, 0);
       media.waitForID(0);  
       can.setImage(image);
       }
     catch (Exception e) { e.printStackTrace();}
     }
   
   public void initLbx() {
     int i = 0;
     try {
       String aLine = "";
        URL source = 
          new URL(parent.getCodeBase(), "imagelist.txt");
       BufferedReader in
         = new BufferedReader
            (new InputStreamReader(source.openStream()));;
       while(null != (aLine = in.readLine())) {
          java.util.StringTokenizer st = 
             new java.util.StringTokenizer(aLine, "|");
         url[i++] = st.nextToken();
         // lbx.addItem(st.nextToken());         
         lbx.add(st.nextToken());
         }
       }
     catch(Exception e) { e.printStackTrace();}
     }
  }class MyCanvas extends Canvas {
  private Image image;
  public MyCanvas() {
    super();
    }  public void setImage(Image i) {
    image = i;
    repaint();
    }  public void paint(Graphics g) {
    if (image != null)
       g.drawImage(image, 0,0, this);
    }
}
 

解决方案 »

  1.   

    skyyoung(路人甲):
      你误会我的意思了,我需要的是在表格当中显示图片,一个图片,对应一串字符串数据
      

  2.   

    import com.sun.java.swing.*;
    // import javax.swing.*;
    import java.awt.*;
    import java.util.*;public class JListWithImages extends JList { public JListWithImages() { 
       setCellRenderer(new CustomCellRenderer()); 
       } public static void main(String[] args) {
       JFrame frame = new JFrame();
       JPanel panel = new JPanel();
       Vector vector = new Vector();
       panel.setForeground(Color.black);
       panel.setBackground(Color.white);   // first line
       JPanel jp1 = new JPanel();
       jp1.add(new JLabel(new ImageIcon("gumby.gif")));
       jp1.add(new JLabel("A line for Gumby"));
       jp1.add(new JLabel(new ImageIcon("gumby2.gif")));   // second line
       JPanel jp2 = new JPanel();
       jp2.add(new JLabel(new ImageIcon("gumby.gif")));
       jp2.add(new JLabel("Another line for Gumby"));
       jp2.add(new JLabel(new ImageIcon("gumby2.gif")));   vector.addElement(jp1);
       vector.addElement(jp2);   JListWithImages jlwi = new JListWithImages();
       jlwi.setListData(vector);   panel.add(jlwi);
       frame.getContentPane().add(panel);
       frame.setSize(300,300);
       frame.setVisible(true);
       } class CustomCellRenderer implements ListCellRenderer {
       public Component getListCellRendererComponent
        (JList list, Object value, int index, 
         boolean isSelected,boolean cellHasFocus) {
         Component component = (Component)value;
         component.setBackground
          (isSelected ? Color.black : Color.white);
         component.setForeground
          (isSelected ? Color.white : Color.black);
         return component;
         }
       }
    }
     
    The above How-to use the default layout, so each line line in the JList are centered. The version below is showing each line left justified instead. // import com.sun.java.swing.*;
    import javax.swing.*;
    // import com.sun.java.swing.border.*;
    import javax.swing.border.*;
    import java.awt.*;
    import java.util.*;public class JListWithImages extends JList { public JListWithImages() {
       setCellRenderer(new CustomCellRenderer());
       } public static void main(String[] args) {
       JFrame frame = new JFrame();
       JPanel panel = new JPanel();
       Vector vector = new Vector();
       panel.setForeground(Color.black);
       panel.setBackground(Color.white);   // first line
       JPanel jp1 = new JPanel(new FlowLayout(FlowLayout.LEFT));   // NEW
       jp1.add(new JLabel(new ImageIcon("gumby.gif")));
       jp1.add(new JLabel("A line for Gumby"));
       jp1.add(new JLabel(new ImageIcon("gumby2.gif")));   // second line
       JPanel jp2 = new JPanel(new FlowLayout(FlowLayout.LEFT));  // NEW
       jp2.add(new JLabel(new ImageIcon("gumby.gif")));
       jp2.add(new JLabel("Another line for Gumby"));
       jp2.add(new JLabel(new ImageIcon("gumby2.gif")));   vector.addElement(jp1);
       vector.addElement(jp2);   JListWithImages jlwi = new JListWithImages();
       jlwi.setListData(vector);
       jlwi.setBorder(new LineBorder(Color.black));   panel.add(jlwi);
       frame.getContentPane().add(panel);
       frame.setSize(300,300);
       frame.setVisible(true);
       } class CustomCellRenderer implements ListCellRenderer {
       public Component getListCellRendererComponent
        (JList list, Object value, int index,
         boolean isSelected,boolean cellHasFocus) {
         Component component = (Component)value;
         component.setBackground
          (isSelected ? Color.black : Color.white);
         component.setForeground
          (isSelected ? Color.white : Color.black);
         return component;
         }
       }
    }