【问题标题】:How does one make an applet scroll?如何制作小程序滚动?
【发布时间】:2011-07-19 19:14:19
【问题描述】:

我一直在尝试将 JScrollPane 与我的小程序一起使用,但它不起作用。我有一个 JPanel,我向其中添加了 20 个按钮,并且我希望能够上下滚动这个 JPanel。相反,滚动条不会出现。当我使用 setPreferredSize 时,它​​们仍然没有出现,即使只显示了大约 3 个按钮,其余的都被切断了。如果我不使用 setPreferredSize,则可能没有任何滚动条,因为我必须使窗口足够大才能看到所有按钮。如果我尝试使滚动条始终可见,它们会出现但什么也不做。我用 JFrame 而不是 Applet 尝试了完全相同的代码,它工作正常,但我需要它是一个 applet。 JScrollPane 与小程序不兼容吗? (注意:我尝试使用外部 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();

【问题讨论】:

标签: java swing applet scroll jscrollpane


【解决方案1】:
  1. 你永远不会把所有面板都放到滚动面板中
  2. 您永远不会将滚动窗格添加到小程序中

基本代码应该是:

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

【讨论】:

    【解决方案2】:

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

    从你的代码来看,我认为你的问题是

    add(scrollPanel);
    

    你应该这样做

    add(scroll);`
    

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

    【讨论】:

    • 主容器是指小程序
    【解决方案3】:

    听起来您在 AWT 容器 (Applet) 中使用 Swing 组件(JScrollPane、JPanel...)。尝试改用JApplet

    【讨论】:

    • 我不知道如何将 Applet 移植到 JApplet,而且,我在我的程序中使用了 JPanel、JLabel、JCheckbox 和许多其他 Swing 组件,它运行良好。只是滚动窗格不起作用。
    • @joseph I do not know how to port Applet to JApplet 只是在J 之前添加Applet,没有别的Container 将是JApplet
    • 我这样做了,但它不能正常运行——我不知道为什么,因为编译器没有报告任何错误。
    • “我这样做了,但它无法正常运行” 然后代码还有其他更基本的问题,通过使用 揭示 JApplet。但是只使用 Swing 和 JComponents,大多数人已经忘记了 AWT 组件。
    • 看看camickr的回答。你永远不会把你的 JPanel 放到 JScrollPane 上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    相关资源
    最近更新 更多