如何制作applet滚动?

时间:2011-07-19 19:14:19

标签: java swing applet scroll jscrollpane

我一直在尝试将JScrollPane用于我的applet,但它不起作用。我有一个JPanel,我添加了20个按钮,我希望能够向上和向下滚动这个JPanel。相反,滚动条不会出现。当我使用setPreferredSize时,即使只显示了大约3个按钮而其他按钮被切断,它们仍然没有出现。如果我不使用setPreferredSize,可能不会有任何滚动条,因为我必须使窗口足够大以查看所有按钮。如果我试图使滚动条始终可见,它们会出现但什么都不做。我尝试使用JFrame而不是Applet完全相同的代码,它工作正常,但我需要它作为一个小程序。 JScrollPane与applet不兼容吗? (注意:我尝试使用外部JPanel并向其添加可滚动面板,但它没有改变任何内容)。更改布局也无法解决问题。我附上了我的代码的简化版本,但它显示了相同的错误。

这是我的代码:

JPanel scrollPanel = new JPanel();
scrollPanel.setLayout(new BoxLayout(scrollPanel, BoxLayout.PAGE_AXIS));
JScrollPane scroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                                    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
for (int i = 0; i < 20; i++) scrollPanel.add(new JButton("Button " + i));
add(scrollPanel);
validate();

3 个答案:

答案 0 :(得分:2)

您正在向Panel添加组件,因此您不应期望看到滚动窗格而不显示滚动窗格。您要做的是将该面板添加到滚动窗格中,该滚动窗格将添加到您的主容器中。

从您的代码中,我认为您的问题是

add(scrollPanel);

你应该这样做

add(scroll);`

这是因为您只将面板添加到不包含任何滚动窗格的框架中。由于您已将面板添加到滚动窗格,因此应将滚动窗格而不是面板添加到主容器中。

答案 1 :(得分:2)

听起来你在AWT容器(Applet)中使用Swing组件(JScrollPane,JPanel,...)。请尝试使用JApplet

答案 2 :(得分:2)

  1. 您永远不会将所有面板都添加到滚动窗格
  2. 您永远不会将滚动窗格添加到小程序
  3. 基本代码应为:

    JScrollPane scrollPane = new JScrollPane(...);
    scrollPane.setViewportView( scrollPanel );
    add( scrollPane );