Java 프로젝트에서 GridBagLayout을 사용하여 UI를 레이아웃했습니다. UI의 모든 구성 요소에는 GridBagConstraints가 UI에 구성 요소를 배치하는 데 사용하는 x 및 y 좌표가 연결되어 있습니다.많은 클래스에 약간의 기능 추가하기
UI의 좌표 (x, y)에 특정 구성 요소를 배치하는 addAt (component, x, y, constraints) 메서드가 있습니다.
오히려 내 UI를 설정하려면 다음을 수행하는 것보다 :
addAt(component1, 3, 1, constraints);
addAt(component2, 3, 2, constraints);
addAt(component3, 3, 3, constraints);
addAt(component4, 3, 4, constraints);
내가 나에게 줄 것 개체 자체의 각 구성 요소의 좌표, 저장하고 싶은 :
addAt(component1, constraints);
addAt(component2, constraints);
addAt(component3, constraints);
addAt(component4, constraints);
내 현재의 방법은, 사용하고있는 모든 JComponents의 기본 클래스를 오버라이드 (override) 해, getXCoord() 및 getYCoord() 메소드를 사용해 인터페이스를 구현하는 것입니다.
JComponents에는 getX() 및 getY() 메소드가 있지만이 메소드의 목적은 내가하는 일과 다릅니다.
기본적으로 내 질문은 위의 정보가 주어지면 모든 개별 JComponent의 재정의 된 버전을 만드는 것보다이 기능을 구현하는 더 깨끗한 방법이 있습니까? 내가 여기서 분명히 빠진 것이 있다면 사과드립니다.
좌표를 구성 요소와 어떻게 연결합니까? –
@ Jordão 더 많은 배경 정보 : 내 프로그램은 스택 히트 맵이라고합니다. StacksComponent와 같은 이름의 인터페이스와 StacksComponent를 구현하는 커스텀 JComponents를 만들었습니다. 예를 들어, StacksJLabel과 StacksJButton을 만들었습니다. 따라서 오버라이드 된 클래스의 경우 StacksJLabel label = new StacksJLabel ("Text", 2, 3)과 같이 생성자에서 좌표를 설정합니다. addAt() 메서드에서 수행중인 작업은 다음과 같습니다. constraints.gridx = component.getXCoord(); constraints.gridy = component.getYCoord(); add (구성 요소, 제약 조건); –