2012-07-17 2 views
1

각 셀마다 다르게 표시되는 imageIcon이 있다고 생각하지만 컴파일 할 때 이미지가 표시되지 않습니다. 이미지의 이름을 표시하지만 이미지 자체는 표시되지 않습니다. 여기 이미지가 있습니다. http://i49.tinypic.com/r9ibrn.jpgJTable의 다른 셀에있는 다른 imageIcon

public class movies extends JFrame { 

    public movies() { 
    initComponents(); 

}  

private void initComponents() { 

    panel = new JPanel(); 
    logo = new JLabel(); 
    pane = new JScrollPane(); 


    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setBackground(new Color(255, 255, 204)); 
    setResizable(false); 

    panel.setBackground(new Color(51, 51, 51)); 
    panel.setPreferredSize(new Dimension(290, 75)); 

    logo.setIcon(new ImageIcon(getClass().getResource("logo.png"))); 
    logo.setName("logo"); 
    logo.setRequestFocusEnabled(false); 
    logo.setVerifyInputWhenFocusTarget(false); 
    logo.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 


    ImageIcon icon1 = new ImageIcon("1.jpg"); 
    ImageIcon icon2 = new ImageIcon("2.jpg"); 
    ImageIcon icon3 = new ImageIcon("3.jpg"); 

    String[] columnNames = {"Section 1", "Section 2"}; 
    Object[][] data = 
    { 
     {icon1 + " Music", icon2 + " News"}, 
     {icon2 + " Movies"}, 
     {icon3 + " Games"}, 
    }; 

    DefaultTableModel model = new DefaultTableModel(data, columnNames); 
    JTable table = new JTable(model) 

    { 
      public Class getColumnClass(int column) 
     { 
      return getValueAt(0, column).getClass(); 
     } 
    }; 


    table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

    table.setBackground(new Color(255, 255, 204)); 
    JScrollPane scrollPane = new JScrollPane(table); 
    getContentPane().add(scrollPane); 

    table.setRowHeight(50); 
    pane.setViewportView(table); 
    table.getColumnModel().getColumn(0).setResizable(false); 
    table.getColumnModel().getColumn(1).setResizable(false); 
} 


public static void main(String args[]) { 


     public void run() { 
      new movies().setVisible(true); 

     } 
    }); 
} 

private JLabel logo; 
private JScrollPane pane; 
private JPanel panel; 

}

+0

내가 잘못 정확하게 볼 당신에게 코드를 해독하기 위해 지금 충분히 동기 부여 아니지만, 내가 당신이라면,이 동작은 참조 유형 주위에 통과 설정되는 방법을 향해 내 관심을 끌기 것이라고 말할 것이다 . –

+1

'getClass(). getResource ("1.jpg")'를 사용하면 분명히 셀에서 같은 이미지를 얻을 수 있습니다. 역동적 인 일을해야합니다! – elias

+0

나는 Java에 익숙하지 않아서 그보다 조금 더 많은 도움이 필요할지도 모른다. : D –

답변

1

당신이 new ImageRenderer 생성자 (read this)를 호출 할 때 이미지의 이름으로 전달할 수 있습니다.

public class Movies extends javax.swing.JFrame { 
    public Movies() { 
     initComponents(); 
     table.getColumnModel().getColumn(1).setCellRenderer(new ImageRenderer("1.jpg")); 
     table.getColumnModel().getColumn(0).setCellRenderer(new ImageRenderer("2.jpg")); 
    } 
} 

class ImageRenderer extends DefaultTableCellRenderer { 
    ImageIcon icon = null;  

    ImageRenderer(String iconName) { 
     icon = new ImageIcon(getClass().getResource(iconName)); 
    } 
} 
+0

도움을 주신 Garrett Hall에게 감사드립니다! 새로운 ImageRenderer에서 이미지의 이름을 전달하려고했지만 두 번째 열의 이미지 만 변경했습니다. 내가 말한 코드를 추가했을 때 변경된 이미지가 있습니다. http://oi48.tinypic.com/2d1o506.jpg JTable에있는 셀의 imageIcon을 지정하는 방법이 있습니까? 예 : Column (2), Row (3)? 아마 내가 프로그래밍에 익숙하지 않은 이래로 당신이 나를 도울 수있는 뭔가를 놓쳤습니다. 기본적으로 고유 한 이미지로 각 셀을 원합니다. –

+0

여기에 설명 된 내용을 수행해야합니다 (http://objectmix.com/java/73143-setcellrenderer-specific-cell-jtable.html). 그들이 당신을 도운다면 응답을 upvote/accept 수 있습니다 :) –

+0

링크를 주셔서 감사합니다, 내가 집에 올 때 그것을 볼 것입니다. 나는 당신의 대답을 여기에서 받아들이는 것을 완전히 잊었다. 그래서 여기있다. : D –