如何使BorderLayout的中心位居前列

时间:2015-01-09 02:29:00

标签: java awt layout-manager border-layout

我有BorderLayout,主要内容位于中心。但是,我在底部有一些内容,它与主要内容重叠,即使那里没有内容。有没有办法让这个中心重叠呢?

enter image description here

正文在卷曲开始的同一点上切断。

private void prepareGUI() throws IOException {

        mainFrame = new JFrame("Holy Bible");
        mainFrame.setSize(700, 500);
        mainFrame.setLayout(new BorderLayout());
        mainFrame.setLocationRelativeTo(null);
        mainFrame.setIconImage(new ImageIcon(getClass().getResource("/assets/bible/textures/icon.png")).getImage());
        mainFrame.getContentPane().setBackground(Color.WHITE);
        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
        mainFrame.addKeyListener(this);

        centerPanel = new JPanel();
        centerPanel.setBackground(Color.WHITE);
        centerPanel.setLayout(new FlowLayout());

        leftLabel = new JLabel("", JLabel.CENTER);
        leftLabel.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 12));
        centerPanel.add(leftLabel);

        rightLabel = new JLabel("", JLabel.CENTER);
        rightLabel.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 12));
        centerPanel.add(rightLabel);

        leftCurl = new JLabel();
        leftCurl.setHorizontalAlignment(JLabel.LEFT);
        leftCurl.setVerticalAlignment(JLabel.BOTTOM);
        leftCurl.setIcon(new ImageIcon(getClass().getResource("/assets/bible/textures/curlleft15.png")));
        mainFrame.add(leftCurl, BorderLayout.SOUTH);

        rightCurl = new JLabel();
        rightCurl.setHorizontalAlignment(JLabel.RIGHT);
        rightCurl.setVerticalAlignment(JLabel.BOTTOM);
        rightCurl.setIcon(new ImageIcon(getClass().getResource("/assets/bible/textures/curlright15.png")));
        mainFrame.add(rightCurl, BorderLayout.SOUTH);

        mainFrame.add(centerPanel, BorderLayout.CENTER);
        mainFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); // Maximizes frame
        mainFrame.setUndecorated(fullScreen);
        mainFrame.setVisible(true);
    }

这是准备GUI的代码。文本以单独的方法添加。

1 个答案:

答案 0 :(得分:2)

您可能需要嵌套JPanel和布局来实现您的目标。例如,两个使用BorderLayout的JPanel可以使用BorderLayout帮助使用主JPanel,将文本添加到CENTER位置。然后添加另一个使用BorderLayout的JPanel到主JPanel的EAST或LINE_END位置。将页面卷曲放在第二个JPanel的BorderLayout.PAGE_END或SOUTH位置。