我已经谷歌搜索了一段时间,但我找不到我正在寻找的东西。我正在尝试构建一个简单的GUI,其中我的contentPane包含一个带有GridLayout的JPanel。
我想要一个说3x3的网格,并用绿色背景jpanel填充右下角的单元格。其余的单元格现在应该是白色的。我该如何实现这一目标?
我知道我可以循环并用white-background-jpanel填充所有其他单元格。但这对项目的其余部分来说是不可行的。这样做的正确/非黑客方式是什么?我只想要一个网格,我可以说"看,它是n x m,现在我只想填写例如第3行第4列"
答案 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);
}
}