Java 如何将JLabel添加到JPanel中的每个第一行、第一列

Java 如何将JLabel添加到JPanel中的每个第一行、第一列,java,swing,user-interface,jlabel,Java,Swing,User Interface,Jlabel,我正在尝试为每个网格的每个第一行/列添加标签“天/时间”。它似乎只添加到最后一个网格中。请参阅所附图片。以黄色突出显示的是我要添加标签“天/时间”的网格 随函附上代码: private void buildGridPanel() { for (int countRoom=0; countRoom < roomPanels.length; countRoom++) { roomPanels[countRoom] = new JPanel();

我正在尝试为每个网格的每个第一行/列添加标签“天/时间”。它似乎只添加到最后一个网格中。请参阅所附图片。以黄色突出显示的是我要添加标签“天/时间”的网格

随函附上代码:

    private void buildGridPanel() {
    for (int countRoom=0; countRoom < roomPanels.length; countRoom++) {
        roomPanels[countRoom] = new JPanel();
        roomPanels[countRoom].setLayout(new GridLayout(ROW, COL));
        roomPanels[countRoom].setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));

        if (countRoom == 0) {
            roomPanels[countRoom].setBorder(BorderFactory.createTitledBorder(roomList[countRoom]));
        } else if (countRoom == 1) {
            roomPanels[countRoom].setBorder(BorderFactory.createTitledBorder(roomList[countRoom]));
        } else {
            roomPanels[countRoom].setBorder(BorderFactory.createTitledBorder(roomList[countRoom]));
        }


        for (int i = 0; i < ROW; i++) {
            for (int j = 0; j < COL; j++) {
                //create new panel for every grid
                JPanel pan = new JPanel();

                pan.setEnabled(true);
                pan.setBackground(Color.WHITE);
                pan.setPreferredSize(new Dimension(3, 3));
                pan.setBorder(BorderFactory.createLineBorder(Color.BLACK));
                // an exception to not click the top row and most left column
                // headers
                if (i != 0 && j != 0) {
                    pan.addMouseListener(new BoxListener()); // add a mouselistener to make the grid panel clickable
                }
                // set names for each panel for later use
                if (countRoom == 0) {
                    pan.setName(roomList[countRoom] + "_" + i + "_" + j);
                    if (i == 0 && j == 0) {
                        pan.add(labelDayTime);
                    }
                } else if (countRoom == 1) {
                    pan.setName(roomList[countRoom] + "_" + i + "_" + j);
                    if (i == 0 && j == 0) {
                        pan.add(labelDayTime);
                    }
                } else {
                    pan.setName(roomList[countRoom] + "_" + i + "_" + j);
                    if (i == 0 && j == 0) {
                        pan.add(labelDayTime);
                    }
                }

                // add the panel to the room panels
                roomPanels[countRoom].add(pan);


            } // end  for loop COL
        } // end for loop ROW

        // add each room panels to the center panel
        centerPanel.add(roomPanels[countRoom]);
    } // end for loop


}
private void buildGridPanel(){
对于(int countRoom=0;countRoom

组件只能有一个父组件,并且在任何给定时间只能存在于面板的一个部分上


您需要创建多个JLabel,并将每个JLabel分别添加到面板中。

这对我帮助很大!谢谢你的帮助@tdel,很高兴这有帮助。不要忘记点击复选标记“接受”答案,这样人们就知道问题已经解决了。