Apresentando ícones associados com os seus executáveis

Este exmplo apresenta um JList de programas disponíveis com seu respectivos ícones associados.

Apresentando ícones associados com os seus executáveis

Este exmplo apresenta um JList de programas disponíveis com seu respectivos ícones associados. Quando você dá o duplo clique na linha, o programa selecionado é executado.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.File;
import javax.swing.filechooser.FileSystemView; 
public class JListWithIconFromExe extends JList { 
 public JListWithIconFromExe() {
   setCellRenderer(new CustomCellRenderer());
   this.addMouseListener(new ActionJList(this));
   } 
 public static void main(String[] args) throws Exception{
   JFrame frame = new JFrame();
   JPanel panel = new JPanel();
   Vector vector = new Vector();
   panel.setForeground(Color.black);
   panel.setBackground(Color.white); 
   JPanel jp1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
   File f1 = new File("c:/windows/notepad.exe");
   jp1.add(new JLabel
(FileSystemView.getFileSystemView().getSystemIcon(f1)));
   jp1.add(new JLabel(f1.getCanonicalPath()));
   JPanel jp2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
   File f2 = new File("c:/windows/regedit.exe");
   jp2.add(new JLabel
(FileSystemView.getFileSystemView().getSystemIcon(f2)));
   jp2.add(new JLabel(f2.getCanonicalPath())); 
   vector.addElement(jp1);
   vector.addElement(jp2); 
   JListWithIconFromExe jlwi = new JListWithIconFromExe();
   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.yellow : Color.white);
return component;
}
   }
} 
class ActionJList extends MouseAdapter{
  protected JList list;
  public ActionJList(JList l){
   list = l;
  } 
  public void mouseClicked(MouseEvent e){
   if(e.getClickCount() == 2){
   int index = list.locationToIndex(e.getPoint());
ListModel dlm = list.getModel();
Object item = dlm.getElementAt(index);
list.ensureIndexIsVisible(index);
System.out.println("Double clicked on " + item);
JPanel jp = (JPanel) item; 
Component[] c = jp.getComponents();
JLabel jl = (JLabel)c[1];
System.out.println(jl.getText());
try {
Runtime.getRuntime().exec(jl.getText());
} catch (Exception ex) { ex.printStackTrace(); }
}
   }
}
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados