如何在此Java应用程序的底部添加页脚(带文本)?

时间:2014-03-05 10:19:02

标签: java swing layout

这是一个用Java制作的井字游戏的链接。 GUI版本的所有代码都包含在链接中。 http://pervasive2.morselli.unimo.it/~nicola/courses/IngegneriaDelSoftware/java/JavaGame_TicTacToe.html

我在添加相对于其他元素位置的文本方面遇到了麻烦。我试过创建另一个容器,但它不起作用。我想在“statusBar”下方或其上方放置一个文本页脚。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

以下是您问题的相关代码(下次您应该将相关代码添加到帖子中,而不是仅仅链接到其他网站):

public class TTTGraphics2P extends JFrame {
    ...
    private DrawCanvas canvas; // Drawing canvas (JPanel) for the game board
    private JLabel statusBar;  // Status Bar

    public TTTGraphics2P() {
        ...
        statusBar = new JLabel("  ");
        statusBar.setFont(new Font(Font.DIALOG_INPUT, Font.BOLD, 15));
        statusBar.setBorder(BorderFactory.createEmptyBorder(2, 5, 4, 5));

        Container cp = getContentPane();
        cp.setLayout(new BorderLayout());
        cp.add(canvas, BorderLayout.CENTER);
        cp.add(statusBar, BorderLayout.PAGE_END); // same as SOUTH

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();  // pack all the components in this JFrame
        setTitle("Tic Tac Toe");
        setVisible(true);  // show this JFrame
    }
    ...
}
  

我在添加相对于其他人的位置的文本方面遇到了麻烦   元素。我试过创建另一个容器,但事实并非如此   工作。我想在下面放置一个文本的页脚   “statusBar”或高于它。

不知道你尝试了什么,但是你可以遵循Nested Layout方法并将两个(或许多需要的)组件包装到一个面板中,并在内容窗格的南方位置添加这个组件。像这样:

    ...
    statusBar = new JLabel("  ");
    JLabel someOtherLabel = new JLabel("Some other label!");

    JPanel southPanel = new JPanel(new GridBagLayout());

    GridBagConstraints constraints = new GridBagConstraints();
    constraints.weightx = 1;
    constraints.anchor = GridBagConstraints.WEST;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.insets = new Insets(8,8,8,8);

    southPanel.add(statusBar, constraints);

    constraints.gridy = 1;

    southPanel.add(someOtherLabel, constraints);

    Container cp = getContentPane();
    cp.setLayout(new BorderLayout()); // default layout manager is actually BorderLayout
    cp.add(canvas, BorderLayout.CENTER);
    cp.add(southPanel, BorderLayout.SOUTH);
    ...

注意:该示例使用GridBagLayout,但可能会根据您的需要找到更合适的布局管理器。

建议阅读

看看Lesson: Laying Out Components Within a Container

答案 1 :(得分:0)

以编程方式将其设为relativelayout,然后使用布局参数p.addRule(RelativeLayout.ALIGN_BOTTOM, view.getId()); ....