如何在JToolbar中将一个按钮对齐?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JToolbar中将一个按钮对齐?相关的知识,希望对你有一定的参考价值。

我有一个工具栏,我需要在屏幕左侧放置一系列jbuttons和jlabels,但右边的一个按钮。我不能让最后一个向右移动。

this.panelControl=new JToolBar();

setLayout(new FlowLayout(FlowLayout.LEFT)); //i use it to move them to the left, probably wrong
panelControl.add(load);
panelControl.addSeparator();
panelControl.add(laws);
panelControl.addSeparator();
panelControl.add(play);
panelControl.add(stop);
panelControl.add(labelSteps);
panelControl.add(steps);
panelControl.add(labelTime);
panelControl.add(time);
panelControl.add(exit); // i need this to be in the right side, but i can't

this.add(panelControl);

非常感谢你提前。

答案

使用JToolBar自己的布局,但在最后两个按钮之间添加一个水平粘合剂。这将为您解决问题。例如:

enter image description here

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;

@SuppressWarnings("serial")
public class BoxLayoutEg extends JPanel {
    public BoxLayoutEg() {
        String[] btnTexts = {"One", "Two", "Three", "Four", "Five", "Exit"};

        JToolBar toolBar = new JToolBar();
        for (int i = 0; i < btnTexts.length; i++) {
            JButton button = new JButton(btnTexts[i]);
            if (i != btnTexts.length - 1) {
                toolBar.add(button);
                toolBar.addSeparator();
            } else {
                toolBar.add(Box.createHorizontalGlue());
                toolBar.add(button);
            }
        }

        setLayout(new BorderLayout());
        add(toolBar, BorderLayout.PAGE_START);

        setPreferredSize(new Dimension(400, 300));

    }

    private static void createAndShowGui() {
        BoxLayoutEg mainPanel = new BoxLayoutEg();

        JFrame frame = new JFrame("BoxLayout Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> createAndShowGui());
    }
}

根据VGR的评论:

最好使用createGlue(),因此即使JToolBar是可浮动的并且由用户浮动并重新对接,拉伸的布局也会保留。

而且他是对的。所以改变这个:

} else {
    toolBar.add(Box.createHorizontalGlue());
    toolBar.add(button);
}

对此:

} else {
    toolBar.add(Box.createGlue());
    toolBar.add(button);
}

这样即使工具栏处于垂直位置,分离仍然存在

另请注意,如果您需要限制JTextField的大小,可以将其最大大小设置为其首选大小,例如,

} else {
    int columns = 10;
    JTextField time = new JTextField(columns);
    time.setMaximumSize(time.getPreferredSize());
    toolBar.add(time);
    toolBar.add(Box.createHorizontalGlue());
    toolBar.add(button);
}

以上是关于如何在JToolbar中将一个按钮对齐?的主要内容,如果未能解决你的问题,请参考以下文章

如何在嵌套线性布局中将按钮与屏幕底部对齐[重复]

将图像添加到 Joomla JToolBar 自定义链接按钮

如何在 Django 模板中将我的单选按钮对齐为连续 2 个

html 有关如何在任何页面上插入Nuvo Express按钮的小片段。此按钮居中对齐,并在新窗口中打开目标URL。

使用 Angular Material,是不是可以在同一行中将一个按钮向左对齐,另一个按钮向右对齐?

如何在导航栏中将导航项对齐到右侧? [复制]