Java Swing:n x m GridLayout,例如[n-1,m-1] =绿色

时间:2017-05-30 08:17:30

标签: java swing grid-layout

我已经谷歌搜索了一段时间,但我找不到我正在寻找的东西。我正在尝试构建一个简单的GUI,其中我的contentPane包含一个带有GridLayout的JPanel。

我想要一个说3x3的网格,并用绿色背景jpanel填充右下角的单元格。其余的单元格现在应该是白色的。我该如何实现这一目标?

我知道我可以循环并用white-background-jpanel填充所有其他单元格。但这对项目的其余部分来说是不可行的。这样做的正确/非黑客方式是什么?我只想要一个网格,我可以说"看,它是n x m,现在我只想填写例如第3行第4列"

1 个答案:

答案 0 :(得分:1)

好的,我明白了:))谢谢Sanket Makani,我按照你的想法! 现在我可以在网格中修改我想要的任何字段。这是完整的代码示例:

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;


public class Test {

    public static void main(String[] args) {

        // frame
        JFrame frame = new JFrame("Pedigree Builder");
        frame.setPreferredSize(new Dimension(400, 300));

        // menu bar
        JMenuBar menubar = new JMenuBar();
        frame.setJMenuBar(menubar);

        // "file" menu
        JMenu fileMenu = new JMenu("File");
        menubar.add(fileMenu);

        // exit button for "file" menu
        JMenuItem exitMenuItem = new JMenuItem("Exit");
        exitMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }

        });
        fileMenu.add(exitMenuItem);

        // content pane = grid
        JPanel contentPane = new JPanel(new GridLayout(0, 3));
        frame.setContentPane(contentPane);

        // init array of fields for the grid
        JPanel[] fieldArray = new JPanel[9];
        for (int i = 0; i < fieldArray.length; i++){
            fieldArray[i] = new JPanel();
            contentPane.add(fieldArray[i]);
        }

        // modify content of particular cell (in this case: bottom right)
        fieldArray[8].setBackground(Color.green);

        frame.pack();
        frame.setVisible(true);

    }

}