【问题标题】:Toolbar doesn't show in Java GUIJava GUI 中不显示工具栏
【发布时间】:2017-04-26 19:41:21
【问题描述】:

为什么工具栏不显示?我想把它放在文件/帮助菜单下......我正在重新创建绘画应用程序,我想把按钮放在工具栏上。菜单工作正常,我认为问题在于用户绘制的画布覆盖了它,但我不确定。请帮忙。

【问题讨论】:

  • contentPane.setLayout(null); -- <rant>为什么人们继续用这样的代码自爆,然后想知道为什么他们的GUI不起作用?</rant>说真的,不要这样做这个。
  • 我猜你建议不要使用绝对布局?这是我的教授希望我们使用的唯一布局,也是他做过演示的唯一布局。我从代码中删除了它,我仍然有同样的问题......
  • @sdotriki, This is the only layout my professor wants us to use, - 那么你的教授应该被解雇。 Swing 旨在与布局管理器一起使用。关键是让布局管理器完成确定组件大小/位置的所有工作,这样您就可以专注于业务逻辑。

标签: java swing user-interface paint jtoolbar


【解决方案1】:
contentPane = new JPanel();
setContentPane(contentPane);
CustomCanvas panel = new CustomCanvas();
panel.setBounds(0, 0, this.getWidth(), this.getHeight());
int xx, yy;
contentPane.add(panel);
contentPane.setLayout(null);

JToolBar toolBar = new JToolBar("This is the toolbar");
toolBar.setBounds(0, 0, 800, 50);
toolBar.setVisible(true);

上面的代码有点乱,因为你:

  1. 尝试将内容面板替换为 JPanel
  2. 然后您尝试使用空布局。
  3. 然后您尝试将组件添加到内容窗格

最终结果是CustomCanvas 在工具栏上绘制。

请勿执行上述任何操作。

而是让内容窗格的布局管理器来处理所有工作。 JFrame 的默认布局是 BorderLayout。所以通常你会简单地使用:

//contentPane.add(toolBar);
add(toolBar, BorderLayout.PAGE_START);

阅读 How to Use ToolBars 上的 Swing 教程中的部分,获取一个工作示例,向您展示更好的程序结构。

【讨论】:

  • 感谢您的快速回复!我一定会阅读您推荐的那部分!但是,即使使用 add(toolBar, BorderLayout.PAGE_START);它仍然没有出现。 ://
  • @sdotriki,您需要更改整个代码以摆脱空布局逻辑和 setBounds() 逻辑。这就是为什么您需要从阅读教程开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 2014-04-21
  • 1970-01-01
相关资源
最近更新 更多