반응형
레이아웃 할당 시 오류: BoxLayout을 공유할 수 없습니다.
이 자바가 있습니다.JFrame
class - box out을 사용하려고 하는데 다음과 같은 오류가 나타납니다.java.awt.AWTError: BoxLayout can't be shared
이 문제를 안고 있는 사람을 본 적이 있습니다만, 컨텐츠 페인에 박스 아웃을 작성함으로써 문제를 해결했습니다만, 이것이 바로 제가 여기서 하고 있는 일입니다.제 코드는 다음과 같습니다.
class EditDialog extends JFrame {
JTextField title = new JTextField();
public editDialog() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("New entity");
getContentPane().setLayout(
new BoxLayout(this, BoxLayout.PAGE_AXIS));
add(title);
pack();
setVisible(true);
}
}
문제가 되는 것은, 그 때문에,BoxLayout
잠깐 동안JFrame
(this
의 레이아웃으로 설정합니다.JPanel
(getContentPane()
). 시험해 보세요.
getContentPane().setLayout(
new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)
);
또, 다음의 에러를 발견했습니다.
JPanel panel = new JPanel(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
BoxLayout에 전달할 때 JPanel이 아직 초기화되지 않았습니다.이 선을 다음과 같이 분할합니다.
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
이거면 될 거야.
앞의 답변에서 강조해야 할 중요한 점은 BoxLayout의 타깃(첫 번째 파라미터)은 다음 예시와 같이 setLayout 메서드가 호출되는 컨테이너와 같아야 한다는 것입니다.
JPanel XXXXXXXXX = new JPanel();
XXXXXXXXX.setLayout(new BoxLayout(XXXXXXXXX, BoxLayout.Y_AXIS));
에서 레이아웃을 사용하는 경우JFrame
예를 들어 다음과 같습니다.
JFrame frame = new JFrame();
frame.setLayout(new BoxLayout(frame, BoxLayout.Y_AXIS));
frame.add(new JLabel("Hello World!"));
컨트롤이 실제로 추가되고 있습니다.ContentPane
그 때문에, 그 「공유」라고 생각됩니다.JFrame
및 그ContentPane
대신 다음을 수행합니다.
JFrame frame = new JFrame();
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
frame.add(new JLabel("Hello World!"));
언급URL : https://stackoverflow.com/questions/761341/error-upon-assigning-layout-boxlayout-cant-be-shared
반응형
'programing' 카테고리의 다른 글
부울 모드의 MySQL FullText: 문자열의 일부로 '+'가 포함된 키워드 검색 (0) | 2022.09.25 |
---|---|
단일 쿼리를 사용하여 여러 날짜 간격당 항목 수 가져오기 (0) | 2022.09.25 |
jar 파일을 실행하는 동안 매니페스트 기본 특성 예외에 대한 서명 파일 다이제스트가 잘못되었습니다. (0) | 2022.09.25 |
MySQL에서 잠금을 유발하지 않고 선택할 수 있는 방법이 있습니까? (0) | 2022.09.25 |
목록을 목록으로 변환 (0) | 2022.09.25 |