swing 窗口最小化后布局改变

zelatanibra 2011-05-04 11:18:33
用SWING写了一个界面,整个是一个JSplitPane,分为左右两部分,左边是一棵导航树,右边又是一个JSplitPane,分为上下两部分。每次启动后点击左边导航树节点,更新右边上下的界面,最小化后再最大化就只剩下右下角的界面。请高手指点。
部分代码:

private void refreshUI() {

rightPane.removeAll();
rightPane.add(settingPanel, JSplitPane.TOP);
rightPane.add(listPane, JSplitPane.BOTTOM);
rightPane.setDividerLocation(200);
rightPane.setDividerSize(3);

mainPane.removeAll();
navPane = new JScrollPane(this.navTree);
mainPane.add(navPane, JSplitPane.LEFT);
mainPane.add(rightPane, JSplitPane.RIGHT);
mainPane.setDividerSize(3);
mainPane.setDividerLocation((int) (screen.width / 5.5));


this.add(mainPane);
this.setPreferredSize(new Dimension(screen.width, screen.height - 30));
this.setTitle("测试");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);

this.pack();
}
...全文
219 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2011-05-04
  • 打赏
  • 举报
回复
refreshUI的时候,你又重新生成了很多组件,估计问题就是在重新生成上,你这不是更新。代码不全
杰笛窗口框架 Docking Framework 杰笛窗口框架提供了一个功能强大且简单易用的工具窗口解决方案,正如用户在Visual Studio .NET IDE或者Eclipse IDE看到的一样。如果您的应用程序很简单,可能没有什么必要使用这个产品。但是对于很多用户来说,应用程序里面可能有很多的工具窗口,用户希望根据他们的需求,选择显示一些窗口,隐藏其它的窗口,而对于显示的窗口,他们又希望可以随意调整它们的大小、位置和状态。在这个情况下,杰笛窗口框架就非常有用了。事实已经证明,杰笛窗口框架是针对有限屏幕空间和复杂窗口布局问题的最有效的解决方案。自2002年底发行以来,全世界众多公司都选择了我们的窗口框架来管理他们应用程序的窗口。毫无疑问,它是目前市场上现有的最好的工具窗口解决方案。 利用Swing即插的LookAndFeel技术,我们制作了几种风格的杰笛窗口框架。在当前发行的版本中包括了类似Office 2003、Office 2007、Visual Studio.NET、Eclipse、Aqua、Xerto和默认的Swing Metal的LookAndFeel。用户可以根据喜好选择自己最喜欢的风格。 功能介绍 工具窗的特性 支持拖放功能 不受限的Dockable Window嵌入层 窗口的自动隐藏 可调整窗口的自动隐藏 浮动的Dockable Window 最大化Dockable Window 带通知的Dockable Window 可隐藏的中央工作空间 支持heavyweight 组件(比如说Java3D、 JOGL、ActiveX组件) 多种风格 Office 2007 风格 Office 2003 风格 Visual Studio .NET 风格 Eclipse 风格 Metal 风格 Aqua 风格 Xerto 风格 布局保存 可以用Java自带的pref保存或者加载布局 可以用文件保存或者加载布局 可以用InputStream和OutputStream (输入流和输出流)保存或者加载布局 可以列出所有前面保存的的布局 可以随时更换布局
用AWT来生成图形化用户界面时,组件和容器的概念非常重要。组件是各种各样的类,封装了图形系统的许多最小单位,例如按钮、窗口等等;而容器也是组件,它的最主要的作用是装载其它组件,但是象Panel这样的容器也经常被当作组件添加到其它容器中,以便完成杂的界面设计。布局管理器是java语言与其它编程语言在图形系统方面较为显著的区别,容器中各个组件的位置是由布局管理器来决定的,共有5种布局管理器,每种布局管理器都有自己的放置规律。事件处理机制能够让图形界面响应用户的操作,主要涉及到事件源、事件、事件处理者等三方,事件源就是图形界面上的组件,事件就是对用户操作的描述,而事件处理者是处理事件的类。因此,对于AWT中所提供的各个组件,我们都需要了解该组件经常发生的事件以及处理该事件的相应的监听器接口。 对于AWT而言,Java 1.1到Java 1.2最大的改变就是Java中所有的库。当Java 1.1版纳入新的事件模型和Java Beans时,平台被设置--现在它可以被拖放到可视化的应用程序构建工具中,创建GUI组件。另外,事件模型的设计和Bean无疑对轻松的编程和可维护的代码都非常有益。对于Swing组件而言,交叉平台GUI编程可以变成一种有意义的尝试。 本章主要介绍了一些Swing的新特性,它和AWT相比有哪些不同的方法和应用,着重阐述了Swing的特色组件和容器,并以图形的形式给出具体描述,同时介绍了组件的分类,使用Swing的基本规则,各种容器面板以及布局管理器,由于Swing是Java2新增特性, 它对图形化用户界面提供了庞大而复杂的类库支持,要能做到开发和实用,还需做大量工作,利用API的帮助,逐步深入摸索其规律,从组件和容器入手,掌握其特色方法。从另一角度来看,Swing和AWT无论是布局管理器还是事件处理机制,以及对一些重量容器的保留和使用,都是我们非常熟悉的内容,其原理我们已在AWT一章做了详细介绍,因此,AWT作为Swing的基础,是需要很好掌握的,希望大家能在不断设计应用中摸索出新方法和新技巧。

62,614

社区成员

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

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