Java JScrollPane JScrollBar住宿酒店
我在JScrollPane中有一个对象。随着对象高度的增加和减少,JScrollBars会出现和消失 有没有办法检测何时发生这种情况Java JScrollPane JScrollBar住宿酒店,java,swing,jscrollpane,jscrollbar,preferredsize,Java,Swing,Jscrollpane,Jscrollbar,Preferredsize,我在JScrollPane中有一个对象。随着对象高度的增加和减少,JScrollBars会出现和消失 有没有办法检测何时发生这种情况 我想在JScrollPane出现时加宽整个JScrollPane,这样对象的最右边部分就不会被JScrollBars阻挡,反之亦然。您可以很容易地听到组件大小的变化,如下所示: JPanel object = new JPanel (); object.addComponentListener ( new ComponentAdapter ()
我想在JScrollPane出现时加宽整个JScrollPane,这样对象的最右边部分就不会被JScrollBars阻挡,反之亦然。您可以很容易地听到组件大小的变化,如下所示:
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;
}
}
}
这将迫使