JSplitPane setOneTouchExpandable 点击小三角进行隐藏时监听的事件 ?

realreachard 2009-12-03 02:51:09
如题
JSplitPane 在设置 setOneTouchExpandable 为true之后,
点击小三角之后,右侧panel隐藏,想得到右侧窗口是不是隐藏的状态,如何实现 ?
监听小三角的事件 ?
还是有对应的属性可以进行判断 ?
...全文
764 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BILLMYAIM 2009-12-08
  • 打赏
  • 举报
回复
顶一个
realreachard 2009-12-03
  • 打赏
  • 举报
回复
呵呵,3Q,

光想要怎么重写三角的事件了,受教了
gentalguo 2009-12-03
  • 打赏
  • 举报
回复
顺便说一句哈,不是针对任何人,更不是lz,何况还拿了美女当头像……

其实很多时候稍稍深入探寻一点就可以探求到事情的真相。
很简单,其实我也不知道。只是想到,改变的一定是分割条的位置,那么极大的可能会调用setDividerLocation方法。跟踪进去,看一下实现

public void setDividerLocation(int location) {
int oldValue = dividerLocation;

dividerLocation = location;

// Notify UI.
SplitPaneUI ui = getUI();

if (ui != null) {
ui.setDividerLocation(this, location);
}

// Then listeners
firePropertyChange(DIVIDER_LOCATION_PROPERTY, oldValue, location);

// And update the last divider location.
setLastDividerLocation(oldValue);
}


firePropertyChange(DIVIDER_LOCATION_PROPERTY, oldValue, location);
看一下,这个函数的原型,前面是属性名称,后面是是其内部的两个参数,可以一直跟踪
JSplitPane-->JComponent-->Component-->ProportyChangeSupport
到这里可以看到这样:

public void firePropertyChange(String propertyName,
Object oldValue, Object newValue) {
if (oldValue != null && newValue != null && oldValue.equals(newValue)) {
return;
}
firePropertyChange(new PropertyChangeEvent(source, propertyName,
oldValue, newValue));
}

也就是说生成了一个新的事件PropertyChangeEvent。
那oldValue,newValue也都可以从这个对象事件中取得了。
而前面的 public final static String DIVIDER_LOCATION_PROPERTY = "dividerLocation";
很容易找到定义。
当然前面的代码写的不好,应该是:

sp.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY,
new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent evt) {
// TODO Auto-generated method stub
System.out.println(sp.getDividerLocation());
}

});
realreachard 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gentalguo 的回复:]
sp是new出来的一个JScrollPane
Java code
sp.addPropertyChangeListener("dividerLocation",new PropertyChangeListener() {

@Overridepublicvoid propertyChange(PropertyChangeEvent evt) {// TODO Auto-generated method stub System.out.println(sp.getDividerLocation());
}

});
[/Quote]

对头
gentalguo 2009-12-03
  • 打赏
  • 举报
回复
sp是new出来的一个JScrollPane

sp.addPropertyChangeListener("dividerLocation",
new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent evt) {
// TODO Auto-generated method stub
System.out.println(sp.getDividerLocation());
}

});
shine333 2009-12-03
  • 打赏
  • 举报
回复
就是这个办法
shine333 2009-12-03
  • 打赏
  • 举报
回复
getWidth() == 0
realreachard 2009-12-03
  • 打赏
  • 举报
回复
自己顶

右侧收起来之后,getLocationOnScreen() 也是有值的,不是null,

想到一个办法 getSize() 如果width是0的话,就是被隐藏了...

求更好的办法.
realreachard 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 swandragon 的回复:]
boolean isVisible()
    确定此对象是否可见。注:这意味着该对象多半是可见的;但是因为包含此对象的对象之一目前不可见,所以可能在屏幕上不显示它。要确定对象是否在屏幕上显示,需要使用 isShowing()。

boolean isShowing()
    确定是否正显示对象。通过检查该对象和祖先的可见性可确定这一点。注:即使该对象被另一对象屏蔽(例如,它是下拉菜单的下级),仍然返回 true。
[/Quote]
谢谢
试了一下,点击三角,右侧收起来之后,查看这个右侧panel的isshowing()结果也是true,
swandragon 2009-12-03
  • 打赏
  • 举报
回复
boolean isVisible()
确定此对象是否可见。注:这意味着该对象多半是可见的;但是因为包含此对象的对象之一目前不可见,所以可能在屏幕上不显示它。要确定对象是否在屏幕上显示,需要使用 isShowing()。

boolean isShowing()
确定是否正显示对象。通过检查该对象和祖先的可见性可确定这一点。注:即使该对象被另一对象屏蔽(例如,它是下拉菜单的下级),仍然返回 true。
realreachard 2009-12-03
  • 打赏
  • 举报
回复
顶者有分,谢谢各位了
内容概要:本文聚焦于考虑经济性的储能运行优化问题,以实现经济效益最大化为核心目标,系统性地研究并实现了储能系统在电力环境中的最优充放电策略。通过Matlab编程平台,采用线性规划、动态规划及智能优化算法(如粒子群、遗传算法等)三种不同方法求解储能运行优化模型,对比分析各算法在求解效率、收敛性与实用性方面的表现。资源内容涵盖完整的模型构建流程、目标函数与约束条件的设计、算法实现代码及仿真结果可视化,重点突出在峰谷电价机制下储能系统的经济调度能力,为相关科研与工程应用提供可复现的技术参考。; 适合人群:具备电力系统基础理论知识和Matlab编程能力的高校研究生、从事新能源与储能系统优化研究的科研人员,以及参与微电网、综合能源系统设计与运行的工程技术人员。; 使用场景及目标:①研究储能系统在分电价机制下的经济运行特性与收益模型;②对比不同数学优化方法在储能调度问题中的适用性与性能差异;③为综合能源系统、智能微网中的储能配置与运行控制提供仿真验证工具与决策支持方案。; 阅读建议:建议读者结合提供的Matlab代码逐模块学习,深入理解目标函数与运行约束的数学建模过程,尝试调整负荷数据、电价曲线或储能参数以观察策略变化,并鼓励拓展引入更多实际限制(如寿命损耗、功率爬坡率)以提升模型工程实用性。
内容概要:本文围绕“基于共享储能服务的智能楼宇双层优化配置”展开研究,通过Matlab代码实现,旨在提升智能楼宇在能源利用方面的效率与经济性。研究构建了上层优化共享储能资源配置与下层优化楼宇内部用能设备调度的双层协同优化模型,综合考虑分电价、可再生能源出力不确定性、用户舒适度约束及储能运行特性等因素,以实现系统综合能源成本最小化与供需平衡的双重目标。文中详细阐述了双层优化问题的数学建模过程、求解算法(如智能优化算法或数学规划方法)的选择与实现策略,并通过仿真验证了所提模型在削峰填谷、降低电费支出、提高可再生能源消纳能力等方面的显著有效性,为共享储能模式在智能建筑中的应用提供了理论依据与技术支撑。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员和工程技术人员,特别适用于从事智能电网、综合能源系统、需求响应、建筑节能及共享经济模式研究的专业人士。; 使用场景及目标:①应用于智能楼宇、商业园区等场景的能源管理系统设计与运行优化;②支撑共享储能项目的规划、投资决策与商业化运营;③作为高校与科研机构在能源互联网、多能协同优化等方向的教学案例与科研参考;④复现高水平EI期刊研究成果,推动先进能源优化技术的实际转化与应用。; 阅读建议:建议读者结合提供的Matlab代码与技术文档进行逐行调试与仿真分析,深入理解双层优化架构的建模逻辑、变量耦合关系及求解流程;可尝试替换不同优化算法或调整参数设置,对比分析其对求解效率与结果的影响,从而深化对模型性能边界与适用条件的认识,并为进一步的模型拓展与创新奠定基础。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧