intellij-idea 需要帮助创建一个简单的程序,以创建一个基于用户输入的java swing矩阵

busg9geu  于 2022-11-01  发布在  Java
关注(0)|答案(2)|浏览(158)

程序要求用户在终端中输入:行数和列数。在获得上述输入后,应该使用提供的numOfRows和numOfColumns的网格布局生成一个矩阵。
然而,有时它并不真正按照预期的方式工作。例如,输入numOfRows为1 & numOfColumns为5将不会创建一个1行5列的矩阵,而是创建一个1行6列的矩阵。
下面是我的代码。

import java.awt.*;
import java.io.PrintStream;
import java.text.*;
import java.util.*;
import javax.swing.*;
public class Main extends JFrame  {
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        System.out.println("Enter num of rows for  matrix:");
        int numOfRow = kb.nextInt();
        kb.nextLine();

        System.out.println("Enter num of columns for  matrix:");
        int numOfColumns = kb.nextInt();
        kb.nextLine();

        JFrame frame = new JFrame();
        frame.setLayout(new GridLayout(numOfRow, numOfColumns));
        frame.setLocation(0,0);
        for(int i=0; i<numOfRow; i++){
            frame.add(new TextField());
        }

        for(int i=0; i<numOfColumns; i++){
            frame.add(new TextField());
        }

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

    }
}

任何帮助或见解都是真诚的感谢。

q3qa4bjr

q3qa4bjr1#

您新增的文字字段比您应该新增的要多。您新增了1列加上5栏,总共是6个。如果您想要矩形排列的项目数目,请将长度乘以深度,以取得总数。

for(int i=0; i<numOfRow*numOfColumns; i++){
        frame.add(new TextField());
    }

删除另一个for循环。

6qqygrtg

6qqygrtg2#

您的for循环应该是嵌套的,而不是连续的:

for (int i = 0; i < numOfRow; i++) {
        for (int j = 0; j < numOfColumns; j++) {
            frame.add(new TextField());
        }
    }

相关问题