2014-11-11 9 views
0

나는 스윙에 관해 간단한 질문을 가지고있다. 자, 이제 한 탭에서 다른 탭으로 전환 할 수있는 두 개의 탭이있는 응용 프로그램이 있다고 가정 해 보겠습니다. 나는 예를 들어, 그 탭의 필드와 버튼을 갖고 싶어자바 스윙 재사용 버튼 다른 탭

TAB 1

Tab1; 
field1 
field2 
AddButton 

TAB 2

Tab2; 
field1 
field2 
AddButton 

내가 그 버튼에 부착 actionListeners이 나는 ​​'이후 응용 프로그램을 확장하고 다른 탭을 만들려고하면 AddButton을 여러 번 사용하고 싶습니다. 그러나 AddButton 탭에 따라 다른 논리를 구현하고 싶습니다. 나는 그것을 누르고 난 tab1에있어 예를 들어 내가 탭 2에있어 그것을 누르면, 논리, "INSERT field1 INTO TAB1.TABLE" 수 있습니다 - 등 "INSERT FIELD1 INTO TAB2.TABLE"

내 질문합니다 -를 재사용하는 간단한 방법이있다 버튼을 눌렀는지 여부에 따라 버튼을 클릭해야합니다. 또는 새 탭마다 새 버튼을 만들어야합니다 (저에게 많은 스파게티 코드처럼 보입니다 ...). 또는 일반 Buttons 인터페이스를 만들고 각 메뉴에 대한 단추로 구현해야합니까?

+0

JButton을 고유 한 클래스로 확장하고 여기에 공통 속성을 설정할 수 있습니다. 그런 다음 각 탭에 대해 인스턴스를 만듭니다. – forgivenson

답변

2

스윙 구성 요소는 하나의 컨테이너에만 배치 할 수 있습니다. 따라서 다른 탭에 동일한 버튼을 사용할 수 없습니다. 하지만 같은 클래스의 인스턴스가 거의 없을 수 있습니다. 모든 탭에 대해 자신 만의 버튼을 만드는 것은 스파게티 코드가 아닙니다. 자신의 행동에 대한 모든 버튼 응답. 물론 SQL 쿼리를 수행하는 것과 동작이 다른 경우 더 일반적인 방법을 수퍼 클래스로 캡슐화하고 하위 클래스 또는 생성자 인수를 통해 쿼리를 지정합니다.

+0

그래서 각 탭마다 두 개의 addButton을 만들어야합니다. 맞습니까? 첫 번째는 table1에 삽입하고 두 번째는 table2에 삽입하는 쿼리와 함께 제공됩니다 - 좋은 접근 방법입니까? – user3240544

+0

@ user3240544 네, 스윙 어플의 가장 큰 문제는 버튼이 없습니다. –