JToolbar左右插入

时间:2013-04-26 06:38:56

标签: java swing jtoolbar

我创建了一个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);
    }
}

2 个答案:

答案 0 :(得分:12)

他们是彼此之上的,因为你把它们全部放在同一个地方 - 即BorderLayout.EASTBorderLayout.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()方法向面板添加新按钮,而不是直接添加到工具栏。

答案 1 :(得分:1)

每个有类似问题的人都可以查看http://helpdesk.objects.com.au/java/right-align-component-in-a-jtoolbar。它提供了一个使用水平胶水的简单示例,它不需要更改默认布局。

这些是从上述链接复制的代码行:

<li><%= link_to "Implementing Bootstrap", list_path(:anchor => "toggle") %></li>