❓문제 상황
JButton의 위치와 크기를 설정할 때
setBounds()라는 메서드를 많이 사용합니다!
import javax.swing.JPanel;
import javax.swing.JButton;
public class StartPage extends JPanel {
public StartPage() {
JButton startBtn = new JButton();
startBtn.setBounds(190, 486, 348, 105);
add(startBtn);
}
}
위 코드 처럼 JPanel에 add한 JButton을 setBounds() 메서드로 위치와 크기를 설정했는데
위치가 움직이지 않았습니다...
분명히 다른 자료들을 찾아봐도 setBounds() 메서드를 사용하는데 말이죠!
🔍 해결 방법
JButton의 위치가 바뀌지 않는 문제는 해결 방법이 아주 간단했습니다!
바로 JPanel에 setLayout(null) 메서드를 추가해주는 것입니다.
import javax.swing.JPanel;
import javax.swing.JButton;
public class StartPage extends JPanel {
public StartPage() {
setLayout(null); //레이아웃 매니저 비활성화
JButton startBtn = new JButton();
startBtn.setBounds(190, 486, 348, 105);
add(startBtn);
}
}
JPanel의 기본 레이아웃 매니저는 FlowLayout이기 때문에
setBounds() 메서드로 컴포넌트의 위치와 크기를 직접 설정하는 것이 올바르게 동작하지 않습니다.
올바른 방법은 setLayout(null)을 사용하여 레이아웃 매니저(FlowLayout, BorderLayout ...)를 비활성화하고,
setBounds()로 컴포넌트의 위치와 크기를 직접 지정하는 것입니다.
'개념정리 > Java' 카테고리의 다른 글
[JAVA] GUI - 프레임 생성 및 기본적인 설정 간단히 정리 (0) | 2023.07.26 |
---|---|
[JAVA] 컬렉션(collection)과 배열(array)의 차이점 간단히 정리☆ (0) | 2023.05.25 |
[JAVA] 추상 메서드와 추상 클래스 쉽고 간단하게 알자! (0) | 2023.05.17 |
[JAVA] 메서드 - isEmpty() (0) | 2023.04.05 |
[Java] 배열(Array) (0) | 2022.09.07 |