我正在为我正在制作的这个数独求解器制作我的GUI。我设法打印出了没有问题的电路板。不过,我想知道如何将3x3区域与某种较粗或有色线区分开来。
基本上类似于下图。
以下是我已经实施的代码。谢谢!
Board = new JPanel(new GridLayout(9, 9));
for(int i= 0; i < 9; i++) {
for(int j = 0; j < 9; j++) {
board[i][j] = new JLabel();
board[i][j].setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));
Font font = new Font("Arial", Font.PLAIN, 20);
board[i][j].setFont(font);
board[i][j].setForeground(Color.WHITE);
board[i][j].setBackground(Color.WHITE);
board[i][j].setOpaque(true);
board[i][j].setHorizontalAlignment(JTextField.CENTER);
Board.add(board[i][j]);
}
}
答案 0 :(得分:6)
到目前为止,最简单的方法是使用9 {3} JPanel
个JLabel
s嵌套到一个大的3x3 JPanel
JPanel
中。然后你可以在小的3x3s上应用特殊的边框。
答案 1 :(得分:3)
如果您创建了自己的自定义JPanel来保存数字并绘制黑色边框,然后使用自定义JPanel来保存这些数据网格,该怎么办?
示例自定义JPanel:
class SudokuPanel extends JPanel {
int digit; //the number it would display
int x, y; //the x,y position on the grid
SudokuPanel(int x, int y) {
super();
this.x = x;
this.y = y;
/** create a black border */
setBorder(BorderFactory.createLineBorder(Color.black));
/** set size to 50x50 pixel for one square */
setPreferredSize(50,50);
}
public int getDigit() { return digit; }
//getters for x and y
public void setDigit(int num) { digit = num }
}
示例自定义网格JPanel:
class SudokuGrid extends JPanel {
SudokuGrid(int w, int h) {
super(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
/** construct the grid */
for (int i=0; i<w; i++) {
for (int j=0; j<h; j++) {
c.weightx = 1.0;
c.weighty = 1.0;
c.fill = GridBagConstraints.BOTH;
c.gridx = i;
c.gridy = j;
add(new SudokuPanel(i, j), c);
}
}
/** create a black border */
setBorder(BorderFactory.createLineBorder(Color.black));
}
}
示例代码:
...
SudokuGrid sg = new SudokuGrid(3,3);
myFrame.add(sg);
...
答案 2 :(得分:1)
以下是Yahoo Answers的一些示例代码!如何将JPanel添加到JPanel
import javax.swing.*;
public class RecursiveJPanelTest
{
public static void main(String[] arg)
{
JFrame window = new JFrame();
JPanel top = new JPanel();
JPanel within = new JPanel();
window. setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
window.setSize(400, 200);
top.setSize(400, 200);
within.setSize(400, 200);
window.add(top);
top.add(within);
within.add(new JButton("Button"));
window.validate();
window.setVisible(true);
top.setVisible(true);
within.setVisible(true);
}
}
如果没有全部搞砸,就无法在评论中发布此内容。