2013-11-09 2 views
1

아이콘의 ArrayList <>을 생성 한 다음 해당 아이콘을 사용하여 인터페이스 JLabel에서 인쇄 할 수 있다면 해결하는데 도움이 필요합니다. 내가하려는 것은 빨강, 초록, 파랑이라고 쓰여있는 3 개의 버튼을 만드는 것입니다. 버튼을 누르면 그 색상으로 사각형이됩니다. 여러 번 누르면 이전 사각형을 삭제하지 않고 여러 개의 사각형을 만듭니다.아이콘을 인터페이스에 삽입하는 방법은 무엇입니까?

redBut.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
        icon.addIcon(new SquareIcon(50, Color.red)); 
        label.setIcon(icon.getIcon(icon.getIconsSize())); 
        System.out.println(icon.getIconsSize()); 
        frame.repaint(); 
        frame.pack(); 
      } 
    }); 

이것은 빨간색 버튼이며, 내가 볼 때 알 수 있듯이, 새 아이콘을 ArrayList에 추가합니다. 그런 다음, arraylist의 특정 인덱스에 아이콘을 가져 와서 해당 아이콘으로 레이블을 설정하려고합니다. 그리고 arraylist의 크기를 알아 내서 인덱스 번호를 얻습니다 (arraylist가 0부터 시작하기 때문에). .

println을 사용하여 실제로 arraylist에 추가되는지 테스트합니다.

하지만 여전히 인터페이스에 표시 할 수 없습니까? 또한 여러 아이콘으로 작동합니까?


편집 :
나는 여러 사각형이 창에 표시하기 위해 노력하고 당신이 버튼을 여러 번 클릭 할 때 (나는 그들이 호출 있다고 생각 JFrames을?). 어쨌든, 아이콘을 한 번만 만들면 버튼을 클릭 할 때마다 새 JLabel을 만들어 목록에 저장 한 다음 JLabels에 아이콘 중 하나를 채우는 것이 좋습니다.

+0

redIcon, blueIcon 및 greenIcon의 세 가지 Icon 개체 만 필요하며 여러 번 사용할 수 있기 때문에 한 번만 만들어야합니다. 나머지 문제에 대해서는 실제 정확한 요구 사항이 명확하지 않습니다 (예 : 여러 개의 사각형). 또한, 왜 아이콘의 ArrayList? 왜 JLabels 목록이 없습니까? 또는 Rectangle2D 객체? 더 많은 프로그램 구조를 기술하십시오. –

+0

버튼에 여러 번 클릭 할 때 여러 사각형을 창에 표시하려고합니다 (JFrames라고 부름)? 어쨌든, 아이콘을 한 번만 만들면 버튼을 클릭 할 때마다 새 JLabel을 만들어 목록에 저장 한 다음 JLabels에 아이콘 중 하나를 채우는 것이 좋습니다. – user2972258

+0

아래 답변을 참조하십시오. List를 사용할 필요가 없습니다. –

답변

2

당신의 상태 :

나는 그것이 아이콘의 ArrayList를 <>을 만들 수 있는지 알아 해결 한 다음 그 아이콘을 사용하여 인터페이스의 JLabel에서 그들을 인쇄 몇 가지 도움이 필요합니다.

아마도이

는 내가 뭘하려고하는 것은, 적색, 녹색, 청색라고하는 3 개 버튼을 만드는 것입니다 ... 당신의 문제를 해결하는 가장 좋은 방법은 아닙니다. 버튼을 누르면 그 색상으로 사각형이됩니다. 여러 번 누르면 이전 사각형을 삭제하지 않고 여러 개의 사각형을 만듭니다.

제안 :

  • 난 당신이 아이콘의 ArrayList에 필요하다고 생각하지 않습니다.
  • 은 다시 세 개의 아이콘의 객체 및 변수하는 redIcon, greenIcon 및 blueIcon
  • 파란색의 JButton을 누를 때마다 만듭니다 blueIcon으로 새 JLabel의를 만들고 레이블을 표시하는 JPanel을 추가합니다.
  • 포함하는 JPanel에서 구성 요소를 추가하거나 제거한 후에는 포함 된 JPanel에서 revalidate()repaint()을 호출하는 것을 잊지 마십시오. revalidate()은 추가 된 새 부품을 포함하여 모든 구성 요소를 다시 레이아웃하도록 JPanel에 지시하고 repaint() 호출은 정리해야하는 컨테이너의 "더티 (dirty)"영역을 페인트하는 데 도움이됩니다.
  • 여러 개의 JLabel에서 동일한 ImageIcon을 여러 번 다시 사용할 수 있습니다.
+0

두 분 모두에게 감사드립니다! 당신은 그것을 할 수있는 방법에 대해 절대적으로 맞았습니다 :) 제 주요한 문제는 아이콘이 어떻게 작동하는지 오해 한 것입니다! 그러나 당신의 설명은 완벽했습니다! – user2972258

+0

@ user2972258 : 도움이 되니 기쁩니다. 의견을 보내 주셔서 감사합니다. 저의 한이긴하지만 유의하십시오. –

+0

@ user2972258 : 앞으로 [빈 체크 표시] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#)를 클릭하여이 대답을 수락 할 수 있습니다. 5235). – trashgod

관련 문제