이 문제에 대한 기존 답변을 검토 한 후에도 여전히 어둡습니다. 탭 프레임 안에 스크롤 가능한 패널을 구현하려고합니다. JScrollPane
및 JTabbedPane
을 사용하고 있습니다. 그러나 스크롤이 작동하지 않습니다.JScrollPane 및 JTabbedPane의 작업
public TabbedFrame(List<Panel> panels) {
super(new GridLayout(1, 1));
JTabbedPane tabbedPane = new JTabbedPane();
int layerNum = 0;
for (Panel p: panels){
JScrollPane scrollPane = new JScrollPane(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setViewportView(p);
scrollPane.setPreferredSize(new Dimension(500, 500));
tabbedPane.addTab("Layer " + layerNum, null, scrollPane, "Layer " + layerNum);
layerNum++;
}
//Add the tabbed pane to this panel.
add(tabbedPane);
//The following line enables to use scrolling tabs.
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
}
public class Panel extends JPanel{
private static final long serialVersionUID = 4109034958236244752L;
private Design design;
public Panel(Design design){
this.design = design;
this.setSize(design.getCanvasWidth(), design.getCanvasHeight());
}
public void paint(Graphics G) {
G.setColor(design.getColor());
design.draw(G);
}
public int getWidth() { return design.getCanvasWidth(); }
public int getHeight() { return design.getCanvasHeight(); }
}
난 당신이 제공 할 수있는 모든 도움을 주셔서 감사합니다 :
이
내 코드입니다.
하는 [MCVE] 또는 게시 [짧은, 자기 포함, 올바른 예 (http://www.sscce.org /). –
* "그러나 스크롤은 작동하지 않습니다."* - 실제로 'Panel' 인스턴스에 아무 구성 요소도 추가하지 않았기 때문에 추측 할 수 있습니까? 그 위에 그리는 것은 선호하는 크기를 계산하지 않을 것입니다. 어쨌든'paint (Graphics') 대신'paintComponent (Graphics)'를 오버라이드해야합니다. 이를 위해'getPreferredSize()'메소드를 그냥 무시할 수있다. 하지만,'scrollPane.setPreferredSize (new Dimension (500, 500));'는 여기에 아무런 영향을 미치지 않으며, 여전히 사용 가능한 모든 공간에 걸쳐 확장됩니다. 그러나 이미 언급했듯이 이것이 문제를 해결하지 못하면 MCVE를 게시하십시오. –