gpt4 book ai didi

java - 如何报告面板更改为父容器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:05 26 4
gpt4 key购买 nike

我有一个面板正在被一个操作更改,该操作将它的子面板换成一个具有不同最小尺寸的新面板。我需要通知我的 JSplitPane 其中一个子面板已更改,以便我可以调用 updateToPreferedSize 方法。是否有我应该监听的已经触发的事件?如果没有,我该如何抛出一个父级可以捕获的事件来通知它?

最佳答案

最简单的方法是在换出子项的面板上触发自定义 propertyChange 事件,以便在换出子项后触发事件。这里有一个很好的例子: http://download.oracle.com/javase/tutorial/javabeans/properties/bound.html

完成后,JSplitpane 可以注册一个监听器并监听该属性,如下所述: http://download.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html

总而言之,在交换子项的面板中,您需要初始化 PropertyChangeSupport:

private final PropertyChangeSupport pcs = new PropertyChangeSupport( this );

然后当你换出面板时:

//All code to swap out the panel goes here
this.pcs.firePropertyChange( "childUpdated", false, true );

在 JSplitPane 中,您需要这样的东西:

//...where initialization occurs:
...
amountField.addPropertyChangeListener("childUpdated",
new ChildUpdateListener());
...
class ChildUpdateListener implements PropertyChangeListener {
public void propertyChanged(PropertyChangeEvent e) {
updateToPreferedSize();
}
}

关于java - 如何报告面板更改为父容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697436/

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