5

JToolbar コンポーネントを作成し、Frame に追加しました。ツールバーは BorderLayout を使用します。

ツールバーに 3 つのボタンを追加すると、ツールバーの右側に追加する以外は問題なく表示されます。右揃え。

次に、他のボタンをツールバーに追加するたびに、それらを左側に追加します。

これどうやってするの?

私は次のことを行いましたが、何が起こるかというと、ボタンが互いの上に表示されます:S 右側の 3 つがすべて互いに重なり合い、左側の 2 つがすべて互いに重なり合っています..

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);
    }
}
4

2 に答える 2

17

それらはすべて同じ 2 つの場所、つまり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()、ツールバーに直接ではなく、メソッドで新しいボタンをパネルに追加します。

于 2013-04-26T06:48:25.323 に答える