我在JScrollPane中有一个对象。随着物体高度的增加和减小,JScrollBars出现并消失。
有什么方法可以检测这件事发生的时间吗?
当整个JScrollPane出现时,我想扩大它们的范围,这样对象的最右边部分就不会被JScrollBars阻塞,反之亦然。
发布于 2013-09-21 23:16:35
您可以轻松地侦听组件大小的更改,如下所示:
JPanel object = new JPanel ();
object.addComponentListener ( new ComponentAdapter ()
{
public void componentResized ( ComponentEvent e )
{
// Your object size changed
}
} );
JScrollPane scrollPane = new JScrollPane ( object );但这可能解决不了你的具体目标。
如果您不希望滚动窗格的垂直滚动条阻碍您的对象,您可以使用一个小技巧来欺骗两者-滚动窗格和您的对象。请检查此示例:
public class Example
{
public static void main ( String[] args )
{
final MyObject object = new MyObject ();
final JScrollPane scrollPane = new JScrollPane ( object )
{
public Dimension getPreferredSize ()
{
final Dimension ps = super.getPreferredSize ();
final JScrollBar vsb = getVerticalScrollBar ();
final Insets i = getInsets ();
ps.width = object.getPreferredWidth () + ( vsb.isShowing () ? vsb.getPreferredSize ().width : 0 ) + i.left + i.right;
return ps;
}
};
}
public static class MyObject extends JPanel
{
public Dimension getPreferredSize ()
{
final Dimension ps = super.getPreferredSize ();
ps.width = 0;
return ps;
}
public int getPreferredWidth ()
{
return super.getPreferredSize ().width;
}
}
}这会迫使..。
可以根据具体情况修改此示例。例如,对于放置滚动窗格的不同容器布局,情况可能有所不同。
https://stackoverflow.com/questions/18938147
复制相似问题