Java GUI - 添加文本字段

时间:2015-11-14 19:16:20

标签: java user-interface

我并不是非常热衷于Java GUI,但我正在学习。我正在制作一个非常简单和基本的数独谜题。现在我只是在它的基本布局。

我想知道是否有一种简单的方法可以为我绘制的每个小矩形添加一个文本字段(总共81个矩形 - 9x9拼图)。这样用户就可以在那里输入内容。

我正在深入研究它,但是想在这里获取代码以查看是否有人有任何提示,因为事实真相被告知,我很失落。

这是我到目前为止所拥有的......

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

class MyCanvas extends JComponent {

    public void paint(Graphics g) {

        int coordinateX = 0;
        int coordinateY = 0;
        // maximum 9 rows
        int rows = 9;
        int columns = 1;

        // make a 9x9 puzzle
        while (columns <= rows) {
            //for loop to increment the boxes
            for (int j = 1; j <= rows; j++) {
                // add and assign coordinte x... equivalent to x = x + 30
                coordinateX += 30;
                // where x and y determine start of the box and 30 determines the size
                g.drawRect(coordinateX, coordinateY, 30, 30);
            } //end of for loop

            //reset the value of x to start a new row
            coordinateX = 0;
            coordinateY += 30;
            columns++;

        } //end of while loop


    } //end of void paint

} //end of class

public class DrawRect {

    public static void main(String[] a) {

        JFrame window = new JFrame();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(100, 100, 500, 500);
        window.getContentPane().add(new MyCanvas());
        window.setVisible(true);

    } // end of void main

} // end of class

希望有人有一些指示可以帮助我,因为男孩哦,男孩我需要它。在没有事先知识或实践的情况下,有点被抛入狮子窝,但我正在努力。

谢谢你们!

1 个答案:

答案 0 :(得分:3)

您可以使用GridLayout(9,9)JTextField's

数组

这当然只是我如何做的一个例子。还有其他方法可以做到这一点。

在下面找到一个通用示例。

解决方案

public static void main(String[] args) {
    JTextField[][] boxes = new JTextField[9][9];
    JFrame frame = new JFrame();
    frame.setLayout(new GridLayout(9,9));
    frame.setSize(500, 500);

    for (int i = 0 ; i < 9 ; i++){
        for (int j = 0 ; j < 9 ; j++){
            boxes[i][j] = new JTextField("0");
            frame.add(boxes[i][j]);
        }
    }

    frame.setVisible(true);
}

输出

SolutionExample