如何在Java Swing中将JToolBar添加到JPanel的中心位置?

4

我刚接触Java Swing。我想设计一个JToolBar,并将其放置在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,请发表那段代码,否则很难猜测。 - Amarnath
  1. 请参考在JPanel上居中JLabel获取技巧。
  2. 为了更快获得更好的帮助,请发布一个SSCCE
- Andrew Thompson
2个回答

4

阅读有关如何使用工具栏的内容。

下面的代码直接摘自文档

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方法和尺寸。这只是一种尝试来解决问题,我不确定这种方法是否正确。 enter image description here
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
@boopathy 看看我的更新。我使用了addSeparator来实现这个。我不确定这是否是正确的方法。这将解决你的问题。但请确保你知道正确的做法,并让我知道。 - Amarnath
@boopathy 在 JPanel 中我们添加了 _JToolBar_。但是按钮在工具栏内部。因此,我们必须对位于 JToolBar 中的按钮进行对齐。但是我已经阅读了文档,它没有任何布局在 JToolBar 内部。因此,我已经添加了一个宽度为 150 的 _addSeparator_,以符合我的框架尺寸。希望这可以帮助到您。 - Amarnath

3

如果您的JPanel使用了BorderLayout布局,并且您将JToolBar放置在BorderLayout.CENTER中,同时在NORTHSOUTHEASTWEST位置上还有其他组件,那么我认为这样做应该是没有问题的。


我也尝试了那种方法,但没有成功,所以才发布了这个问题。 - boopathy
很难猜测在您的情况下“没有起作用”意味着什么。请发布一些代码、截图或其他任何有关信息。 - Dan D.
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); - boopathy
正如我所说,将内容添加到UI的其他部分,而不仅仅是中心。 - Dan D.
我尝试了所有可能性(使用BorderLayout.CENTER而不是BorderLayout.NORTH或EAST或WEST或SOUTH)。所有的输出都是相同的。 - boopathy
您必须将工具栏添加到中心位置,并在其他部分添加其他面板,甚至是空面板。 - Dan D.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接