【问题标题】:How to make center of BorderLayout the top如何使 BorderLayout 的中心位于顶部
【发布时间】:2015-03-07 07:47:07
【问题描述】:

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

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

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 的代码。文本以单独的方法添加。

【问题讨论】:

  • "I have some content at the bottom corners, and it is overlapping the main content, even though there is no content there." -- 没有内容怎么能重叠内容??请避免混淆这样的帖子。显示代码和图片,并尽量在你的描述中更清楚。对于代码,最好发布Minimal, Complete, and Verifiable Example Program
  • 重叠的唯一原因是如果您一直在向BorderLayoutCENTER 位置添加更多组件。考虑提供一个runnable example 来证明您的问题。这将导致更少的混乱和更好的响应

标签: java awt layout-manager border-layout


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-08-14
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2016-07-28
    • 2022-11-02
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    相关资源
    最近更新 更多