2011-11-11 24 views
2

我在我的应用程序中使用水平定向的JSplitPane。让Swing JSplitPane支持一触式调整大小,但不是拖动

我在左侧有一个控制面板,在右侧有一个编辑器。调整控制面板的大小并没有意义;它的布局太敏感了。所以,我想要它被显示或不显示。

调整JSplitPane部件几乎符合我的要求(特别是下文所示的一触调整行为)。但我不想让用户拖动调整大小栏:我只想要一触式行为。

splitPane.setOneTouchExpandable(true); 

任何指向如何做到这一点?

+2

'我只是想一触式behaviour.' - 如何,在哪里,为什么,是鼠标点击,触摸屏从......为更好地帮助越早,请发表http://sscce.org/ – mKorbel

+0

Hi @mKorbel我了解sscce的作用,但这个问题并不特定于我的实例。我没有破解代码,我希望了解Swing JSplitPane组件的使用模式。我不相信这个Java Swing问题有一个TouchScreen上下文。 – ianmayo

+0

ianmayo我从来没有见过differencies中间人鼠标,用的Java6手指在屏幕上点击,你的问题错过了JComponents和使用的布局管理 – mKorbel

回答

2

有没有简单的方法与JSplitPane做到这一点。

使用JideSplitSpaneJide Common Layer(GPL类路径的除外)来代替。然后做:

JideSplitPane splitPane = ...; 
splitPane.setDragResizable(false); 
splitPane.setOneTouchExpandable(true); 

JideSplitSpane有几个其他优点,如允许多个拆分相比JSplitPane

0
splitPane.setEnabled(false); 
+0

无效,因为这也会禁用单键调整行为。 – ianmayo

+0

@ianmayo,你真的测试过这个,还是假设它不起作用?当使用金属LAF时,它正常工作,这是我测试它的方式。也许你有一个LAF问题,这不会让我的答案错误。发布您使用的测试代码。 – camickr

+0

是的,我发布之前测试过。除此之外,setEnabled(false)将部分组件启用将是不合逻辑的。请参阅:http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JComponent.html#setEnabled(boolean) – ianmayo