1
JScrollPane
안에 JDesktopPane
가 있습니다. JDesktopPane
에는 프로그래밍 방식으로 추가 된 JInternalFrame
이 많이 있습니다.JScrollPane 내의 JDesktopPane 크기 변경 문제
가
JDesktopPane
가 크기를 조정할 때
(주 JFrame의 크기보다 훨씬 큰) 고정 된 크기를 가져야한다 :이 동작을하고 싶습니다
JScrollPane
크기가 주요 JFrame의에 따라 변화한다
기본적으로 모든 이미지 편집기 (예 : Photoshop)와 동일한 동작이지만 이미지 대신보기 포트에 JInternalFrame
이 표시됩니다.
처음에는이 동작이 쉽게 발생한다고 생각했지만 제대로 이해하지 못했습니다. 확실히 나는
여기import javax.swing.*;
import java.awt.Dimension;
import java.awt.Rectangle;
class Main extends JFrame {
JDesktopPane container = new JDesktopPane();
// New frame with 2 JInternalFrames inside a JDesktopPane inside a JScrollPane
Main(){
super("JDesktopPane SS");
setSize(1280, 720);
setLayout(new ScrollPaneLayout());
container.setBounds(new Rectangle(1920, 1080));
JScrollPane scrollContainer = new JScrollPane(container, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
setContentPane(scrollContainer);
container.add(createFrame());
container.add(createFrame());
}
public static void main(String[] args){
SwingUtilities.invokeLater(() -> {
// Create new frame with 2 JInternalFrames inside a JDesktopPane inside a JScrollPane
JFrame main_frame = new Main();
main_frame.setVisible(true);
});
}
// Create new InternalFrame with a TextPane
private JInternalFrame createFrame(){
JInternalFrame new_frame = new JInternalFrame("Document");
new_frame.setResizable(true);
JTextPane txt = new JTextPane();
txt.setPreferredSize(new Dimension(100, 80));
new_frame.add(txt);
new_frame.pack();
new_frame.setVisible(true);
return new_frame;
}
}
감사합니다. 이제는 정상적으로 작동합니다. 하지만 그 방법을 사용해서는 안됩니다. 맞습니까? – Ararararagi
@Ararararagi : 어떤 메소드,'setPreferredSize (...)'? 혹시. 당신이 순정 주의자라면 JDesktopPane이나 뷰포트에서'getPreferredSize()'를 오버라이드해야한다. 그러나'setSize (...)'또는'setBounds (...) '를 호출하는 것이 덜 권장된다는 것을 이해하십시오. –
@Ararararagi : 뷰포트가 작동하는 방식과 포함 된 구성 요소의 크기를 조정하는 방법을 이해하는 것이 가장 중요합니다. –