2017-03-14 18 views
2

내가 .getGraphics().의 drawImage (..)JMenu에 이미지가 그려되어있는 JPanel의 위의 회색 상자 잎

를 사용하여 JPanel의 몇 가지 기하학적 객체를 끌어 내 프로그램에 대한 메뉴를 만들려고하고 있어요 내가 가지고있는 문제는이 메뉴에서 항목을 선택하면 텍스트가 사라지지만 배경색은 사라진다는 것입니다. 선거법은 위의 명령을 사용하여이 패널에서 이미지를 다시 그리는 방법을 사용하지만 분명히 제거하는 데 도움이되지 않습니다.

이 메뉴 항목을 클릭하면이 회색 상자가 메뉴 다음에 남은 후 기본적으로 메뉴 항목 클릭 이후에 사용 된 것과 동일한 방법을 호출하는 마우스를 사용하여 장면을 이동하여 사라질 수 있습니다. 이것은 왜 메뉴 항목 메서드 호출로 상자가 제거되지 않지만이 메서드의 다음 호출에서는 나 혼란 스럽습니다.

왜 이런 일이 발생했는지 및/또는 어떻게 수정해야하는지에 대한 아이디어가 있습니까?

감사합니다. . .getGraphics를 사용 JPanel의 일부 형상 물체를 끌어 A, B are JMenus on JMenuBar and the gray box below is left after JRadioButtonMenuItem selection

+0

내 생각에 패널이 사라진 것을 감지하면 패널을 다시 그릴 수 없도록 차단했습니다. 하지만 코드를 보지 않고는 말할 수 없습니다. –

+0

패널에서 수동으로 설정 한 것은 setPreferredSize()뿐입니다. (차이가 나는 경우 모든 구성 요소가 JFrame에 있음) – EyfI

답변

2

()의 drawImage (:

화상 (A, B는 이하 JRadioButtonMenuItem 선택 후에 남아의 JMenuBar 및 회색 상자 JMenus이다). .)

사용자 정의 페인팅에는 getGraphics()을 사용하지 마십시오.

JPanelpaintComponent(...) 메서드를 재정 의하여 사용자 지정 그림이 수행됩니다. super.paintComponent (...)를 첫 번째 명령문으로 호출하는 것을 잊지 마십시오.

자세한 내용과 작업 예제는 Custom Painting의 스윙 튜토리얼 섹션을 참조하십시오.

+0

감사합니다. 회색 상자 문제가 해결되었습니다. 그러나 이제 이미지가 다시 그려지면 각 다시 그릴 때 깜박이며 그 원인은 무엇입니까? – EyfI

+0

@EyfI, 문제가 더있는 경우 문제를 나타내는 적절한 [mcve]가 포함 된 다른 질문을하십시오. MCVE를 만들 때 문제가 발생할 가능성이 있습니다. 튜토리얼의 요점은 튜토리얼을 읽고 작업 예제를 다운로드하여 사용자 정의 페인팅을 코딩하는 적절한 방법을 배우는 것입니다. 튜토리얼의 코드를 반드시 따라야한다. '메뉴 사용법'에 대한 자습서도 있습니다. – camickr