【问题标题】:how to make JPanel's length and width extendible automatically?如何让 JPanel 的长宽自动扩展?
【发布时间】:2012-01-31 15:45:15
【问题描述】:

我有一个 JScrollPane,我在其中放置了一个 JPanel。 还有一个按钮,按下时会绘制一个任意长宽的矩形 在面板上。所以每次按下这个按钮,都会调用JPanel的repaint方法。

问题在于,有时矩形的长度很长,因此 JPanel 不会全部显示,只显示已经适合面板的一部分。

如何让 JPanel 显示其中绘制的内容,无论矩形的尺寸是多少?

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖 SSCCE。一种解决方案可能是设置面板的首选大小(大于矩形)并验证滚动窗格。

标签: java swing jpanel jscrollpane


【解决方案1】:

一种选择是将矩形绘制到类似尺寸的BufferedImageGraphics 对象上,然后将此图像用作JLabelIcon。将此标签添加到面板中任意坐标处,然后revalidate JScrollPane 并发出repaint 请求。

【讨论】:

  • 如果您每次都添加 JLabel,那么您不必在 JScrollPane 上重新绘制或重新验证,只需使用 setViewportView(Component view) 或 JViewport.setView(...),任何方法都可以。问候
【解决方案2】:

您的 ScrollPane 限制了大小,默认面板将拉伸以适应它的子组件。 ScrollPane 是固定的,这就是它被称为 ScrollPane 的原因,您可以做的是以编程方式计算矩形的大小并在每次按下按钮时使用该大小重新绘制滚动窗格,或者更好的是,您应该知道可能的大小并使您的 GUI 合适足以弥补所有这些尺寸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2018-04-23
    相关资源
    最近更新 更多