JFrame标题将无法正确对齐

时间:2012-12-08 22:57:04

标签: java swing user-interface alignment jframe

我有简单的JFrame窗口,其标题保持向右浮动(尽管用英文写成)。 居住在中东,但使用英文版的Windows 7。 什么是正确对齐标题​​文本和左端的正确方法 标题栏?

imports...

public class MainWindow extends JFrame {

    private JPanel contentPane;
    private final String arr[] = {"1","2","3","4","5","6","7","8","9","10"};

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainWindow frame = new MainWindow("The Simulator");

                    frame.setVisible(true);

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MainWindow(String title) {
        super(title);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 582, 435);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

        JButton btnRandom = new JButton("Generate new random DCSP");
        contentPane.add(btnRandom);

        JButton btnManual = new JButton("Generate new manual DCSP");

        contentPane.add(btnManual);
    }

}

无法使用

frame.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);

frame.applyComponentOrientation(ComponentOrientation.getOrientation(Locale.US));

2 个答案:

答案 0 :(得分:1)

标题文本的对齐方向实际上取决于它运行的操作系统。我知道在Windows 8上的计算机上,文本在中间对齐,在osx中​​是相同的,但在Windows 7中它在右边。 This solution虽然是一种解决方法,但我不知道它是否适用于所有操作系统。

答案 1 :(得分:0)

如果我没有误解这个问题。您希望将标题文本对齐到不同的位置。如左,中,还是右?

我认为标题栏的位置是由操作系统设定的。新窗口8将所有标题设置在标题栏的中心,而Windows 7将其设置在左侧。

我认为解决这个问题的方法是看到标题占用的空间并通过添加空格来操纵它。

我会尝试将我的标题设置为一堆“AAAAAA”并查看填充整个标题栏需要多少“AAAAA”,

例如,如果需要100 A来填充我的标题栏并且我的宽度为100(减去图标和按钮),那么我知道每个字母占用100/100 = 1个空格。知道了,让我说我想把标题设置为Hi“并将其对齐到最右边的角落,我可以在”Hi“前添加98个空格