この問題に対する既存の回答を確認した後、私はまだ暗いです。私は、タブ付きフレームの内部にスクロール可能なパネルを実装しようとしています。私は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を投稿してください。 –