gpt4 book ai didi

java - 强制缩小 JScrollPane 内的 MigLayout-Component

转载 作者:行者123 更新时间:2023-12-04 06:00:39 31 4
gpt4 key购买 nike

我有一个使用 MigLayout 作为其 LayoutManager 的组件。它设置为在 JScrollPane 内增长以占据整个可用宽度。因此,如果我调整应用程序框架的大小,则 JScrollPane 与框架一样宽,内部组件也是如此。

但是,当我缩小框架时,JScrollPane 内部增长的组件只是保持其宽度并且不会缩小,因此显示水平滚动条。

我知道 JScrollpane needs to shrink its width并使用 getScrollableTracksViewportWidth=true 实现了 Scrollable-Interface 但 MigLayout 似乎并不尊重它。

有什么建议吗?谢谢

最佳答案

我用以下 Scala 代码段解决了它。 Scala 的 Scrollable 只是一个假包装器,你应该实现 Java-Scrollable ...

import javax.swing.JPanel
import javax.swing.{Scrollable => JScrollable}
import javax.swing.BoxLayout
import java.awt.Dimension
import java.awt.Rectangle
import scala.swing.SequentialContainer
import scala.swing.Orientation
import scala.swing.Scrollable
import scala.swing.Panel

class ScrollablePanel extends Panel with SequentialContainer.Wrapper with Scrollable.Wrapper {

var scrollIncrement: Int = 10
var blockScrollIncrement: Int = 50

val allowVerticalScrolling: Boolean = true
val allowHorizontalScrolling: Boolean = false

override lazy val peer = new JPanel with SuperMixin with JScrollable {
def getPreferredScrollableViewportSize: Dimension =
getPreferredSize

def getScrollableTracksViewportHeight: Boolean =
!allowVerticalScrolling

def getScrollableTracksViewportWidth: Boolean =
!allowHorizontalScrolling

def getScrollableBlockIncrement(visibleRect: Rectangle, orientation: Int, direction: Int): Int =
scrollIncrement

def getScrollableUnitIncrement(visibleRect: Rectangle, orientation: Int, direction: Int): Int =
blockScrollIncrement
}

final protected def scrollablePeer: JScrollable = peer
}

关于java - 强制缩小 JScrollPane 内的 MigLayout-Component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949699/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com