有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JScrollPane和JTabbedPane

在回顾了关于这个问题的现有答案之后,我仍然一无所知。我试图在一个选项卡式框架内实现可滚动面板。我正在使用JScrollPaneJTabbedPane。然而,滚动不起作用

这是我的代码:

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(); }

}

我将感激你能提供的任何帮助


共 (1) 个答案

  1. # 1 楼答案

    发现了问题。 我也应该设置面板的最佳尺寸:

    for (Panel p: panels){
            JScrollPane scrollPane = new JScrollPane(
                    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            p.setPreferredSize(new Dimension(1000, 1000));
            scrollPane.setViewportView(p);
            scrollPane.setPreferredSize(new Dimension(500, 500));
            tabbedPane.addTab("Layer " + layerNum, null, scrollPane, "Layer " + layerNum);
            layerNum++;
        }