Java GUI工具栏
我正在开发一个Java桌面应用程序。在这一点上,我希望在JFrame的顶部有一些工具栏(与通常的GUI应用程序一样)Java GUI工具栏,java,user-interface,swing,awt,Java,User Interface,Swing,Awt,我正在开发一个Java桌面应用程序。在这一点上,我希望在JFrame的顶部有一些工具栏(与通常的GUI应用程序一样) 我想允许用户通过单击一些按钮来动态添加/删除工具栏。如何实现这一点(通过任何布局或其他方式),以便当用户添加/删除工具栏时,工具栏下方的剩余空间会相应调整。如果使用正确的LayoutManager并添加/删除组件,则应自动计算布局 JPanel p = new JPanel(new BorderLayout()); p.add(someComponent, BorderLay
我想允许用户通过单击一些按钮来动态添加/删除工具栏。如何实现这一点(通过任何布局或其他方式),以便当用户添加/删除工具栏时,工具栏下方的剩余空间会相应调整。如果使用正确的LayoutManager并添加/删除组件,则应自动计算布局 JPanel p = new JPanel(new BorderLayout()); p.add(someComponent, BorderLayout.CENTER); JPanel p=newjpanel(newborderlayout()); p、 添加(someComponent,BorderLayout.CENTER); 现在,如果您稍后执行以下操作 SwingUtilities.invokeLater(new Runnable() { public void run() { p.add(newComponent, BorderLayout.NORTH); } }); SwingUtilities.invokeLater(新的Runnable(){ 公开募捐{ p、 添加(新组件,BorderLayout.NORTH); } });
我认为(但尚未测试)面板将自动重新显示以匹配新配置。我建议您在程序中使用BorderLayout,并保留工具栏的北部区域。在此(北)区域添加另一个容器(具有BoxLayout或FlowLayout),具体取决于您希望工具栏的添加方式/放置位置
看看Java Layout Manager教程。我为所有工具栏制作了一个JPanel(为该JPanel设置“框”布局),将我的JToolBar工具栏放在JPanel上,并将我的按钮放在它们各自的JToolBar上以对它们进行分组,从而使我的工具栏最终能够工作。我使用的是生成代码的NetBeans,因此我无法有效地将代码放在这里
通过这种设置,我可以使用setVisible()方法来显示和隐藏各个按钮和JToolBar。文档说明应该使用validate()方法来重新定位按钮,但在没有它的情况下,至少在Windows7下,它对我是有效的。当我在Ubuntu10下试用时,工具栏的布局是错误的,所以现在我的答案部分是正确的。这几乎是半小时前我回答的另一个问题的翻版:如果你对按钮点击做出反应,您甚至不必经历使用
invokeLater
的麻烦,因为您已经在EDT上。对于工具栏,我将使用BorderLayout.PAGE\u START而不是NORTH