사용자 정의 투명도를 JPanel
상단에 오버레이하려고합니다. 두 구성 요소가 계층화 된 창의 가장자리까지 확장되도록합니다. 오버레이를 표시하고 싶을 때를 제외하고는 일반적으로 아무 것도하지 않기 위해 상단 구성 요소의 paintComponent
메서드를 재정의했습니다. 그런 다음 해당 텍스트를 적절한 위치에 그립니다. 여기하나의 패널에 여러 구성 요소를 오버레이하는 적절한 방법입니까?
은 레이아웃 문제에 대한 내 솔루션입니다 :
JLayeredPane jlp = new JLayeredPane();
jlp.setLayout(new OverlayLayout(jlp) {
@Override
public void layoutContainer(Container target) {
for (Component c: target.getComponents())
c.setBounds(0, 0, target.getWidth(), target.getHeight());
}
});
질문은 - layoutContainer
을 무시하지 않고이 작업을 수행 할 수있는 더 나은 방법이 있나요? 이것은 나에게 해킹처럼 보인다. 내 말은, 실제로 구성 요소를 배치 할 때이 작업을 수행 할 수있는 옵션이 없다는 것을 믿을 수 없습니다. 그러나 메서드를 재정의하지 않으면 위쪽과 왼쪽에 간격이 생깁니다.
여기에 뭔가가 누락되었거나 이러한 요구 사항을 처리하는 적절한 방법입니까?