【问题标题】:How to add JToolBar in center of JPanel ,Java Swing?如何在 JPanel、Java Swing 的中心添加 JToolBar?
【发布时间】:2013-01-06 16:05:26
【问题描述】:

我是 Java Swing 的新手。我想设计一个 JToolBarJToolBar 应该放在JPanel 的中心。可能吗?

javax.swing.JPanel pane = new javax.swing.JPanel(); 
BorderLayout border = new BorderLayout(); 
pane.setLayout(border); 
JToolBar toolBar = new JToolBar(); 
pane.add(toolBar,BorderLayout.CENTER); 
javax.swing.JButton button1 = new javax.swing.JButton("Click Me"); 
toolBar.add(button1);

【问题讨论】:

  • 如果您尝试过使用 BorderLayout 则发布该代码,否则将很难猜到。
  • 1) 有关提示,请参阅Centering a JLabel on a JPanel。 2) 为了尽快获得更好的帮助,请发帖SSCCE

标签: swing jpanel border-layout jtoolbar


【解决方案1】:

如果您JPanel 有一个BorderLayout 并且您将JToolBar 放在BorderLayout.CENTER 中并且您在NORTHSOUTHEASTWEST 中有组件,那么我看不到它不起作用的原因。

【讨论】:

  • 我也试过这种方式,但没有奏效,这就是为什么发布这个问题。
  • 很难猜到在您的情况下“不起作用”是什么意思。发布一些代码,屏幕截图,无论你有什么。
  • javax.swing.JPanel pane = new javax.swing.JPanel(); BorderLayout border = new BorderLayout(); pane.setLayout(border); JToolBar toolBar = new JToolBar(); pane.add(toolBar,BorderLayout.CENTER); javax.swing.JButton button1 = new javax.swing.JButton("Click Me"); toolBar.add(button1);
  • 正如我所说,将内容添加到 UI 的其他部分,而不仅仅是在中心。
  • 我尝试了所有可能性(BorderLayout.CENTER 而不是 BorderLayout.NORTH 或 EAST 或 WEST 或 SOUTH)。所有的输出都只产生相同的结果。
【解决方案2】:

了解How to use ToolBars

以下代码直接取自doc

public ToolBarDemo() {
    super(new BorderLayout());
    ...
    JToolBar toolBar = new JToolBar("Still draggable");
    addButtons(toolBar);
    ...
    setPreferredSize(new Dimension(450, 130));
    add(toolBar, BorderLayout.PAGE_START);
    add(scrollPane, BorderLayout.CENTER);
}

在此处查看BorderLayout 的用法。并对代码进行必要的更改。

更新:

我已尝试使用您的代码来显示这样的输出。我使用了addSeparator 方法和维度。 This is just a try to solve the problem. I am not sure whether this approach is the correct way.

public static void main(String[] args) {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel(new BorderLayout()); 
    JToolBar toolBar = new JToolBar(); 
    panel.add(toolBar,BorderLayout.PAGE_START);

    toolBar.addSeparator(new Dimension(150, 0));

    JButton button1 = new JButton("Click Me"); 
    toolBar.add(button1);
    frame.setLayout(new BorderLayout());
    frame.add(panel, BorderLayout.CENTER);
    frame.setSize(new Dimension(400, 100));
    frame.setVisible(true);
}

【讨论】:

  • 我在尝试我的代码时也得到了相同的结果。是否可以在工具栏的中心位置显示“点击我”按钮?
  • @boopathy 看看我的更新。我使用 addSeparator 来做到这一点。我不确定这是否是正确的方法。这将解决您的目的。但请确保您知道这样做的正确方法,并请告诉我。
  • 它工作正常...谢谢(@Che)...但是,为什么它不会发生在 JPanel 中?
  • @boopathy 在 JPanel 我们添加了 JToolBar。但 Button 在工具栏内。所以我们必须对齐 JToolBar 中的按钮。但是我已经阅读了文档,它在 JToolBar 中没有任何布局。所以我添加了一个相对于我的框架尺寸宽度为 150 的 addSeparator 。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
相关资源
最近更新 更多