반응형
BoxLayout을 공유 할 수 없습니다 오류
JFrame
boxlayout을 사용하려는 Java 클래스가 있지만 오류가 발생 java.awt.AWTError: BoxLayout can't be shared
합니다. 이 문제가있는 다른 사람들을 보았지만 컨텐츠 창에 상자 레이아웃을 만들어 문제를 해결했지만 이것이 내가하고있는 일입니다. 내 코드는 다음과 같습니다.
class edit_dialog extends javax.swing.JFrame{
javax.swing.JTextField title = new javax.swing.JTextField();
public edit_dialog(){
setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
setTitle("New entity");
getContentPane().setLayout(
new javax.swing.BoxLayout(this, javax.swing.BoxLayout.PAGE_AXIS));
add(title);
pack();
setVisible(true);
}
}
귀하의 문제는 당신이 만드는 것입니다 BoxLayout
A의을 JFrame
( this
), 그러나의 레이아웃으로 설정 JPanel
( getContentPane()
). 시험:
getContentPane().setLayout(
new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)
);
나는 또한 이것을 만드는 오류를 발견했다.
JPanel panel = new JPanel(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
JPanel은 BoxLayout에 전달할 때 아직 초기화되지 않았습니다. 이 줄을 다음과 같이 나누십시오.
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/boxlayout-cant-be-shared-error
반응형
'programing tip' 카테고리의 다른 글
MongoDB에서 날짜별로 컬렉션을 정렬하는 방법은 무엇입니까? (0) | 2020.07.30 |
---|---|
psql을 사용할 때 postgres에서 스키마를 선택하는 방법은 무엇입니까? (0) | 2020.07.30 |
긴 텍스트 문자열에서 모든 줄 바꿈 제거 (0) | 2020.07.30 |
Flask에서 SQLAlchemy 결과 세트를 jsonify (0) | 2020.07.30 |
bash : 나쁜 대체 (0) | 2020.07.30 |