【问题标题】:FileBrowser with JPanel Scrollable带有 JPanel 可滚动的 FileBrowser
【发布时间】:2011-12-02 03:39:20
【问题描述】:

我正在尝试在面板中显示一堆图像。该面板将具有固定大小,并且可以滚动以显示所有图片,这是一种缩略图库。事实上,我不明白JScrollPanel 如何与JPanel 和其他人一起工作。有人可以帮助获得像 Windows 资源管理器一样可滚动的JPanel 吗?包含组件和可滚动的面板。

我有一个扩展 JPanel 的 FlowLayoutPanel ...

  public FlowLayoutPanel () 
  {
      setLayout(new FlowLayout());
      this.setSize(new Dimension(1000,1000));
  }

...

现在,我可以将图像添加到该面板!但是当 JPanel 被填充到最大(最大尺寸)时,我希望在右侧看到一个漂亮的滚动条来滚动我的面板!

【问题讨论】:

  • 您可以发布您在尝试使其工作时使用的代码吗?
  • 当然我们可以帮助您,但首先您需要提出一个可以回答的问题。现在你的问题有点模糊而且非常广泛,关于任何人都可以做的最好的事情就是建议你阅读 JScrollPane 教程(你可以找到 here)。
  • 1) 不要扩展JPanel,而是创建一个面板并设置一个布局。 2)不要打电话给setSize(),而是setPreferredSize()
  • 但我的目标是创建一个 FileExplorer 作为 CustomComponent。所以我可以从 Palette 中取出它并将它拖到我的 JFrame 中。因此,我的文件浏览器的基础将是一个带有 FlowLayout 的扩展 JPanel,因此文件可以从左到右一个接一个地放置......就像在资源管理器中一样!为什么扩展 JPanel 不是一个好主意?我想记住你们,我是 JAVA 和 Swing 组件的新手。我还是不太懂 UI 层级!
  • 在尝试创建自定义组件之前,首先需要学习 Swing。为此,您应该暂时搁置 GUI-builder 并学习使用教程作为指南手动创建 Swing。你不会后悔这样做的。

标签: java swing jpanel jscrollpane


【解决方案1】:

我正在尝试在面板中显示一堆图像

也许您可以使用 JList。支持horizontal wrap开启时自动换行。

我想在右侧看到一个漂亮的滚动条,以便滚动浏览我的面板!

那么您需要一个自定义布局管理器,而不是自定义面板。见Wrap Layout

【讨论】:

    【解决方案2】:

    首先——不要设置 JPanel 的大小。让布局经理决定尺寸应该是多少。您要做的是创建一个新的 JScrollPane 并将此面板传递给 JScrollPane 的构造函数。然后,您需要设置 JScrollPane 或其视口的preferredSize(因为大多数布局管理器都尊重preferredSize,而不是大小)。

    【讨论】:

    • 好吧,看起来不错..所以如果我想做一个迷你文件浏览器..扩展 JScrollPane 然后添加一个字段 CustomFLowLayoutPanel 会不会是个好主意。我有一个扩展 JScrollPane 的自定义组件,所以我只需要将它拖到我的 JFrame 上?你认为它可以工作吗?
    • +1 用于发现 setSize 与 setPrefSize,-1 用于 setPrefSize - 总和为零
    猜你喜欢
    • 2021-06-21
    • 2016-03-09
    • 2010-11-26
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 2014-05-12
    • 2012-04-16
    • 2021-06-03
    相关资源
    最近更新 更多