有关 Swing 的问题!!!

kofight 2003-03-02 03:23:51
我修改了SwingSet2的例子,把JTabbedPane换成了JPanel,就出现了一个奇怪的问题,第一次换模块的时候不自动刷新成新的模块,只是显示一个空的面板,这时,必须改变一下窗口大小才能正常显示,而且以后再切换到该模块的时候,就能正常的显示。
请问到底是怎么回事?
...全文
16 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kofight 2003-03-02
  • 打赏
  • 举报
回复
to renhuailin(清风一夜听丝雨(小狍子)):ok,问题解决了,请问updateUI()这个函数有什么用处,和repaint()有什么差别没?
JTabbedPane为什么可以不用,但JPanel却得用?
kofight 2003-03-02
  • 打赏
  • 举报
回复
先谢谢了,得请老兄多帮忙,我第一次用SWING

不是其中的任何一个模块,而是外面的大框架,就是那个SwingSet2.java,他原来显示的时候,有查看源码的Tab,我就想把这个去掉,去掉后我就想用不着JTabbedPane了,因为只有单个Tab了,所以我就想把JTabbedPane换成JPanel,但是接着就出现问题了。给我的感觉就是第一次点图标换模块时只是换了,但不启动,然后改变一下窗口大小或第二次再点就启动了
换的代码如下:

(原来的)
/**
* Sets the current demo
*/
public void setDemo(DemoModule demo) {
currentDemo = demo;

// Ensure panel's UI is current before making visible
JComponent currentDemoPanel = demo.getDemoPanel();
SwingUtilities.updateComponentTreeUI(currentDemoPanel);

demoPanel.removeAll();
demoPanel.add(currentDemoPanel, BorderLayout.CENTER);

tabbedPane.setSelectedIndex(0);
tabbedPane.setTitleAt(0, demo.getName());
tabbedPane.setToolTipTextAt(0, demo.getToolTip());
}


(换成)
/**
* Sets the current demo
*/
public void setDemo(DemoModule demo) {
currentDemo = demo;

// Ensure panel's UI is current before making visible
JComponent currentDemoPanel = demo.getDemoPanel();
SwingUtilities.updateComponentTreeUI(currentDemoPanel);

demoPanel.removeAll();
demoPanel.add(currentDemoPanel, BorderLayout.CENTER);
demoPanel.setToolTipText(currentDemo.getToolTip());
// demoPanel.repaint();
}
任怀林 2003-03-02
  • 打赏
  • 举报
回复
调用JPanel的updateUI方法就可以了。
shine333 2003-03-02
  • 打赏
  • 举报
回复
好,自己动手,丰衣足食,祝你学习进步!

是TabbedPaneDemo?
你把什么换成了JPanel?

62,614

社区成员

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

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