2012-04-04 4 views
1

저는 JPanel을 가지고 있는데이 JPanel에 아주 간단한 이미지 (항목)를 그려야합니다. DrawRect 나 DrawOval과 같은 메서드를 사용하고 싶습니다.이 패널에는 스크롤바가 있습니다. this처럼 보입니다.여러 이미지로 JPanel 만들기

특정 색인에서 항목 (이미지)을 제거하고 추가해야합니다. 도와 줄수있으세요?

답변

1

시작과 JList에서 봐 봐 또는 수직 BoxLayout. 이것을 JScrollPane에 넣습니다. 주요 JPanel의 내부, 당신의 drawRect(), drawOval (드로잉 할 수있는 일반의 paintComponent() 메소드를 확장 JPanel의 인스턴스)를 가지고 할 것 등이 시작하기해야

public JScrollPane buildScrollingContainerPanel() 
{ 
    JPanel containerPanel = new JPanel(new GridLayout(0, 1)); 
    JScrollPane scrollPane = new JScrollPane(containerPanel); 
    containerPanel.add(new MyPanel(true, false)); 
    containerPanel.add(new MyPanel(false, true)); 

    return (scrollPane); 
} 

private class MyPanel extends JPanel 
{ 
    private boolean drawRect; 
    private boolean drawOval; 

    public MyPanel(boolean drawRect, boolean drawOval) 
    { 
     super(); 
     this.drawRect = drawRect; 
     this.drawOval = drawOval; 
    } 

    public void setDrawRect(boolean b) 
    { 
     drawRect = b; 
     repaint(); 
    } 

    public void setDrawOval(boolean b) 
    { 
     drawOval = b; 
     repaint(); 
    } 

    @Override 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 

     if (drawOval) 
     { 
      g.setColor(Color.RED); 
      g.drawOval(16, 16, 16, 16); 
     } 

     if (drawRect) 
     { 
      g.setColor(Color.GREEN); 
      g.drawRect(32, 32, 16, 16); 
     } 
    } 
} 

에 containerPanel의 자식에 액세스하려면 containerPanel.getComponent(int)을 사용하고 MyPanel로 캐스팅합니다.

+0

대단히 고마워요. 정말 훌륭하게 작동합니다. – user1313386

1

당신은이 중 하나 GridLayout과를 사용합니다 (아마 GridLayout)

+0

답변 해 주셔서 감사합니다. 이전에는 DrawOval과 같은 메서드를 사용한 아이콘을 사용한 적이 없습니다. 파일의 이미지 만로드했습니다. 파일에서 이미지를로드하고 싶지 않습니다. 무언가를 그리는 방법을 간단한 예제로 게시하고 아이콘에 저장할 수 있습니까? – user1313386

관련 문제