gpt4 book ai didi

java - JPanel 的动态调整大小

转载 作者:行者123 更新时间:2023-12-01 13:15:46 25 4
gpt4 key购买 nike

我有一个 JPanel,位于 JScrollPanel 中,当整个程序编译并运行时,会显示一个包含 JPanelJScrollPanel(以及其他组件)。每当用户在 JPanel 的边缘绘制某些内容(例如在靠近下边缘或左边缘的 n 像素内)时,GUI 应该自动调整 JPanel 的大小code>,即增加JPanel的大小。我使用了鼠标事件监听器(MouseDraggedMouseClickedMousePressed;用于绘图),在这些监听器中,我为JPanel。因此,每当在边缘绘制某些内容时,JPanel 的大小都应该增加(并且由于它位于 JScrollPane 内,如果增加幅度很大,则应该增加滚动条)出现)。但调整大小并没有发生。

最佳答案

当添加到滚动 Pane 视口(viewport)的组件的首选大小大于滚动 Pane 的大小时,滚动条将自动出现。因此,您需要重写 JPanel 的 getPreferrredSize() 方法来动态重新计算首选大小。

首选尺寸计算需要考虑:

  1. 面板上绘制的所有组件的大小。所以你可能会使用 ArayList 来跟踪所有组件。然后,您只需循环遍历列表即可确定任何组件的最大宽度/高度位置。

  2. 拖动鼠标时的鼠标位置。如果该值大于上述计算的宽度/高度,则需要使用该值。您还需要为每个 mouseDragged 事件调用 revalidate() 以确保组件的布局完成。

关于java - JPanel 的动态调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22487909/

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