Java 只听用户更改JSplitPane分隔器位置?
我试图实现一个JSplitPane,将其状态保存到某个配置文件中,因此我添加了一个类似这样的侦听器:Java 只听用户更改JSplitPane分隔器位置?,java,swing,jsplitpane,propertychangelistener,Java,Swing,Jsplitpane,Propertychangelistener,我试图实现一个JSplitPane,将其状态保存到某个配置文件中,因此我添加了一个类似这样的侦听器: mHorSplitPane.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent changeEvent) { JSplitPane sourceSplitPane = (JSplitPa
mHorSplitPane.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent changeEvent) {
JSplitPane sourceSplitPane = (JSplitPane) changeEvent.getSource();
String propertyName = changeEvent.getPropertyName();
if (propertyName.equals(JSplitPane.DIVIDER_LOCATION_PROPERTY)) {
mController.writeSplitPaneProperty((int) (sourceSplitPane.getDividerLocation()/(float)sourceSplitPane.getBounds().width*100));
}
}
});
它处理得很好,但由于某些原因,有时Swing代码本身会更改此属性并更改分隔符位置,关于如何克服此问题的任何建议?
但由于某些原因,有时Swing代码本身会更改此属性
-->有三种可能性1。
您的代码以及使用的LayoutManager2。
您在JSplitPane API中实现的代码和方法,3.
使用的LayoutManager和在JSplitPane API中实现的方法您是否提供了一种方法来确定方法的调用是由程序还是由用户进行的?但是由于某些原因,有时Swing代码本身会更改此属性-->
-我不知道Swing为什么会这样做。发布您的SSCCE以演示问题。如果调整框架的大小,并且拆分窗格的大小发生变化,那么我可以看到该值发生变化,但这对我来说是有意义的。也许您应该处理windowClosing()事件来保存组件的状态。