我创建了一个JToolbar组件并将其添加到Frame中。工具栏使用的是BorderLayout。
我在工具栏上添加了三个按钮,除了我想将它们添加到工具栏的右侧外,它们显示得很好。右对齐。
然后当我在工具栏上添加其他按钮时,我希望它们添加到左侧。
我该怎么做?
我做了下面的操作,但结果是按钮出现在彼此的顶部:S右边的三个按钮都在彼此上,左边的两个按钮都在彼此上。
public class Toolbar extends JToolBar {
private JToggleButton Screenshot = null;
private JToggleButton UserKeyInput = null;
private JToggleButton UserMouseInput = null;
private CardPanel cardPanel = null;
public Toolbar() {
setFloatable(false);
setRollover(true);
setLayout(new BorderLayout());
//I want to add these three to the right side of my toolbar.. Right align them :l
Screenshot = new JToggleButton(new ImageIcon());
UserKeyInput = new JToggleButton(new ImageIcon());
UserMouseInput = new JToggleButton(new ImageIcon());
cardPanel = new CardPanel();
add(Screenshot, BorderLayout.EAST);
add(UserKeyInput, BorderLayout.EAST);
add(UserMouseInput, BorderLayout.EAST);
addListeners();
}
public void addButtonLeft() {
JButton Tab = new JButton("Game");
Tab.setFocusable(false);
Tab.setSize(50, 25);
Tab.setActionCommand(String.valueOf(Global.getApplet().getCanvas().getClass().hashCode()));
Tab.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cardPanel.jumpTo(Integer.valueOf(e.getActionCommand()));
}
});
add(Tab, BorderLayout.WEST);
}
}
它们在彼此的顶部,因为你把它们都放在相同的两个地方-即BorderLayout.EAST
和BorderLayout.WEST
。
你可以达到你想要的效果,不使用BorderLayout
,而是使用JToolBar
的默认布局。
add(tab);
// add other elements you want on the left side
add(Box.createHorizontalGlue());
add(Screenshot);
add(UserKeyInput);
add(UserMouseInput);
//everything added after you place the HorizontalGlue will appear on the right side
编辑(基于您的评论):
创建一个新的JPanel,并将其添加到工具栏的粘合前:
JPanel leftPanel = new JPanel();
add(leftPanel);
add(Box.createHorizontalGlue());
add(Screenshot);
add(UserKeyInput);
add(UserMouseInput);
然后让你的addButtonLeft()
方法添加新的按钮到面板,而不是直接到工具栏。
每个有类似问题的人都可以看看http://helpdesk.objects.com.au/java/right-align-component-in-a-jtoolbar。它提供了一个非常简单的使用水平粘合的例子,避免了更改默认布局的必要性。
这些是从上面的链接复制的代码行:
JToolBar toolbar = new JToolBar();
// These buttons will be left aligned by default
toolbar.add(new JButton("Open"));
toolbar.add(new JButton("Save"));
// add some glue so subsequent items are pushed to the right
toolbar.add(Box.createHorizontalGlue());
// This Help button will be right aligned
toolbar.add(new JButton("Help"));