2012-06-12 2 views
2

저는 Swing과 AWT의 초보자입니다. Netbeans를 사용하여 GUI를 작성하려고합니다. 내 GUI에는 JFrame에서 JPanels로 생각하고있는 세 가지 영역이 필요합니다. 마우스 입력을 수신하고 Java2D 셰이프를 그릴 "그리기"패널이 필요합니다. 그리기 패널이 왼쪽 상단에 고정됩니다. 다른 두 영역은 "속성"스크롤 창과 "컨트롤러"스크롤 창입니다. 컨트롤러 팬은 단추를 통해 표시 할 그리기 요소를 결정하고 속성 스크롤 창에는 드로잉 창에서 클릭 한 모든 모양 개체 (끝점, 색 등)에 대한 세부 정보가 표시됩니다.이 디자인의 최상위 컨테이너 인 JFrame이있는 JFrame 또는 JInternalFrames가있는 JDesktop

드로잉 영역의 일반적인 사용 예는 드로잉 영역의 첫 번째 클릭이 셰이프의 첫 번째 좌표 인 IE : 선이되도록하는 것입니다. 이 클릭은 point2d 객체로 캡처됩니다. 두 번째 클릭은 두 번째 point2D 객체가되고 둘 사이에 선이 만들어집니다. 컨트롤러 영역에는 "원", "선", "엘립스"와 같은 버튼이 있습니다. 클릭 한 컨트롤러 버튼에 따라 해당 유형의 모양 만 그리기 영역에 그려집니다. 컨트롤러 및 속성 스크롤 창은 움직일 수 없으며 각각 GUI의 아래쪽 및 오른쪽으로 잠그고 크기를 조정할 수 있습니다.

초심자로서, 나는 최고의 구성 요소를 사용하는 데 어려움을 겪고 있습니다. 나는 JDesktop과 JInternalFrame에 대해 읽었지만 실제로 그렇게 할 필요는없는 것처럼 보인다. 3 개의 JPanel을 가진 간단한 JFrame으로 충분합니다. 좀 더 구체적으로 말하자면 드로잉 프레임 용 JPanel과 두 개의 JScrollPanels를 사용하여 최상위 JFrame이 필요하다고 생각합니다. 각 클릭의 좌표를 캡처하기 위해 그리기 창에 마우스 수신기가 필요하며 컨트롤 창의 각 버튼에 대한 수신기가 있어야합니다. JPanel에 마우스 수신기를 놓고 Java2D 셰이프를 드로잉 할 수 있습니까? 아니면 JPanel에서 드로잉을 수행 할 때 다른 (더 좋은?) 컨테이너가 필요합니까?

+0

간결성을 위해 리팩터링이이 게시물에 어떤 영향을 미치는지 알고 싶습니다. 나는 당신이 공간의 50 %에서 질문을 적절하게 표현할 수있을 것이라고 확신합니다. – xelco52

+0

건설적인 비판에 감사드립니다. 초심자로서 저는이 모든 것을 배우고 있습니다. 어쩌면 내가 알아야 할 모든 것을 배웠을 때, 나는 "간결함을 위해 리팩터링"할 수 있습니다. 물론, 일단 모든 것을 배웠다면 그 질문 자체는 의미가 없습니다. – NickAbbey

+0

건설적인 비판에 대한 긍정적 인 반응 +1. – trashgod

답변

5

GraphPanel 이러한 응용 프로그램을 구성하기위한 아이디어를 줄 수 있습니다.

GraphPanel screenshot

+0

나는 이것을 좋아해, 링크를 주셔서 감사합니다. 어떻게해야 할 지 아이디어를 얻기 위해 소스를 살펴 보겠습니다. – NickAbbey

+0

컨트롤 패널에 대해서도'JToolBar'를 고려하십시오. – trashgod

4

JInternalFrames에는 일반적으로 제목 표시 줄, 이동 상자 등이 있습니다. example here 귀하의 모델에 맞지 않는 것 같습니다. (사용자가 원하는 곳 어디에서나 패널을 움직이게하거나 멀리 떨어지게하고 싶지 않다면) JPanels로 더 간단한 JFrame을 제안 할 것입니다.

+0

나는 실제로 사용자가 인터페이스를 다시 정렬 할 필요가 없습니다. 실제로, 당분간, 나는 그들이 그 (것)들을 능력 있기 위하여 특히 싶지 않는다. Google은 실제로 그 예를 보여 주었지만 그게 얼마나 관련성이 있는지 확신 할 수 없었습니다. 귀하의 추천에 따라 자세히 살펴 보겠습니다. 감사! – NickAbbey

+2

다시 정렬하지 않으려면 JInternalFrames를 피하십시오.내가 제안한 것처럼 JPanels와 함께 JFrame을 사용하십시오. @Mike Clark은 그의 대답에 좋은 예를 보여줍니다. – user949300

4

도면 영역, 제어 영역 및 등록 영역을 분리하는 두 가지의 JSplitPane를 고려한다. JSplitPane을 사용하면 분할 선을 마우스로 클릭하고 드래그하여 영역의 크기를 조정할 수 있습니다. 앱을 만들 경우

enter image description here

이 (최상위 구성 요소에 대한 JFrame의를 사용합니다.)

을 초보자로서, 당신은 크기 조정 및 스크롤이 필요하지 않은 경우, 당신은 훨씬 쉽게 시간을 가질 것 크기를 조정하거나 스크롤하지 않습니다.

+0

흥미 롭습니다. 필자가 분할 창을 읽거나 연습해야 비트가 내 프로젝트에 유용 할 지 알 수 있습니다. 분할 창 2의 경우 컨트롤 및 속성 영역이 스크롤되거나 각 창 내부에 스크롤 창을 중첩해야합니까? 또한 - 드로잉 영역 안에 중첩 된 일부 추가 구성 요소가 필요합니까? 아니면 해당 창에서 직접 청취 및 그릴 수 있습니까? – NickAbbey

+0

@NickAbbey 세 영역 모두에서 스크롤 패널을 원할 수도 있습니다. – user949300

+1

세 개의 논리 영역 각각에 JScrollPane을 배치 할 수 있습니다. 그런 다음 위젯을 포함하는 JPanel (예 : GraphPanel)을 JScrollPane에 추가 할 수 있습니다. 크기 조정 및 스크롤이 필요하지 않은 경우 크기를 조정하거나 스크롤하지 않는 앱을 ​​만들면 훨씬 편하게 사용할 수 있습니다. –

관련 문제