2013-10-17 1 views
0

jscrollpane에 일부 이미지를 추가하고 내 jlist 문자열을 상대 이미지로 선택하면 올바른 이미지가 표시되어야하지만이를 수행 할 의심이 있습니다.jscrollpane에 이미지 목록 추가 및 표시

public class Tela{ 
    private JList<String> list; 

    public Tela(){ 

     JFrame display = new JFrame(); 
     display.setTitle("Maquina de Refrigerante"); 
     String labels[] = { "Coca-Cola", "Fanta Laranja", "Fanta-Uva", 
       "Sprite"}; 
     JPanel panel = new JPanel(); 
     panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS)); 


     JPanel firstPanel = new JPanel(); 
     JPanel buttonPanel = new JPanel(); 

     JPanel secondPanel = new JPanel(); 
     //downPanel.add(BorderLayout.SOUTH); 
     //downPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 30, 260)); 
     secondPanel.setBackground(Color.WHITE); 
     secondPanel.setPreferredSize(new Dimension(110,110)); 

     final JButton comprar = new JButton("Comprar"); 
     comprar.setEnabled(false); 


     list = new JList<String>(labels); 
     list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     list.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); 
     list.setSelectedIndex(0); 
     JScrollPane pane = new JScrollPane(); 
     pane.getViewport().add(list); 
     firstPanel.add(pane); 

     list.addListSelectionListener(new ListSelectionListener() { 

      @Override 
      public void valueChanged(ListSelectionEvent e) { 
       int selections[] = list.getSelectedIndices(); 
       //String selectedValue = list.getSelectedValue(); 
       Object selectionValues[] = list.getSelectedValues(); 
       for (int i = 0, n = selections.length; i < n; i++) { 
        if (i == 0) { 
       System.out.println("Value" + selectionValues[i]); 
        }} 
       comprar.setEnabled(true); 

      } 
     }); 


     ImageIcon image = new ImageIcon("assets/fantalogo.jpg"); 
     JScrollPane jsp = new JScrollPane(new JLabel(image)); 
     panel.add(jsp); 

     buttonPanel.add(comprar); 
     buttonPanel.add(Box.createRigidArea(new Dimension(0,4))); 
     buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); 

     panel.add(firstPanel); 
     panel.add(secondPanel); 
     panel.add(buttonPanel); 
     //panel.add(buttonPanel, BorderLayout.CENTER); 
     panel.setBackground(Color.BLACK); 

     display.add(panel); 
     display.setSize(550, 500); 
     display.setLocationRelativeTo(null); 
     display.setDefaultCloseOperation(display.EXIT_ON_CLOSE); 
     display.setVisible(true); 

     comprar.addActionListener(new Paga()); 
    } 


} 

내 코드에 어떻게 구현하고 올바르게 출력 할 수 있습니까?

+0

제안과 마찬가지로 : 왜 'ListCellRenderer'를 사용하여 사진을 보관하기 위해 별도의'JScrollPane'을 사용하는 대신'JList' 자체에서 그림과 설명을 추가하지 마십시오? – dic19

+0

@ dic19 내 이름 목록 (레이블)에서 항목을 선택해야하며이 렌더링 이미지가 올바른 경우 어떻게 ListCellRenderer를 사용할 수 있습니까? –

+1

@ 웨슬리, 자습서를 아직 읽었습니까 ??? – camickr

답변

2

How to Use Combo Boxes에 대한 스윙 튜토리얼의 섹션을 살펴보십시오. 당신이 원하는 것을 거의 정확하게 수행하는 예제를 찾으십시오. 이 예제에서는 콤보 상자를 사용하지만 JList의 코드는 매우 유사합니다. 콤보 상자에는 문자열 목록이 포함되어 있으며 항목을 선택하면 일치하는 이미지가 표시됩니다.