如何在JPanel / JLabel上打印

时间:2014-05-12 04:19:06

标签: java swing jpanel jlabel arrays

所以我的代码会在JPanel上垂直打印玩家姓名和得分,首先是所有玩家,然后是所有得分。我想知道如何一个接一个地打印他们的分数。例如。

Name1 Score1
Name2 Score2
Name3 Score3
Name4 Score4

我的代码是针对前10名玩家/分数而制作的,所以我使用数组进行此方法。我的代码是:

for (int x = 0; x < 10; x++)
         {
            JSingleplayer[x] = new JLabel (Singleplayer[x]);
            EndPanelplayer.add(JSingleplayer[x],BorderLayout.EAST);
            JSingleScore[x] = new JLabel (SingleScore[x]);
            EndPanelscore.add(JSingleScore[x],BorderLayout.WEST);
         }
            EndFrame.add(EndPanelplayer);
            EndFrame.add(EndPanelscore);

如你所见,我有2个面板。我设置了一个东部和一个西部但是没有用。我也尝试过两个南方。我需要帮助修复我的代码或添加其他代码,以便与其配合垂直打印。提前谢谢!

2 个答案:

答案 0 :(得分:1)

我会使用JTable

有关更多信息和工作示例,请参阅How to Use Tables上Swing教程中的部分。

另外,请遵循Java命名约定。变量名不应以大写字符开头。

答案 1 :(得分:0)

每当您想要排列标签和/或字段时,您应该立即考虑使用GridBagLayout

您还应该使用小写字母来启动Java字段。以下是Java Naming Conventions

这是你的代码。在定义JPanel时,您需要设置布局。

private static final Insets bottomInsets    = 
        new Insets(0, 0, 6, 0);

private void addLabels() {
    int gridy = 0;

    for (int x = 0; x < 10; x++) {
        jSingleplayer[x] = new JLabel(singleplayer[x]);
        addComponent(mainPanel, jSingleScore[x], 0, gridy, 1, 1,
                bottomInsets, GridBagConstraints.LINE_START,
                GridBagConstraints.NONE);

        jSingleScore[x] = new JLabel(singleScore[x]);
        addComponent(mainPanel, jSingleScore[x], 1, gridy++, 1, 1,
                bottomInsets, GridBagConstraints.LINE_START,
                GridBagConstraints.NONE);
    }
}

private void addComponent(Container container, Component component,
        int gridx, int gridy, int gridwidth, int gridheight, 
        Insets insets, int anchor, int fill) {
    GridBagConstraints gbc = new GridBagConstraints(gridx, gridy,
            gridwidth, gridheight, 1.0D, 1.0D, anchor, fill, 
            insets, 0, 0);
    container.add(component, gbc);
}