Вставка JToolbar влево и вправо
Я создал компонент JToolbar и добавил его во фрейм. Панель инструментов использует 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 ответа
Они на вершине друг друга, потому что вы помещаете их все в те же два места, а именно 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"));