Как расположить значения 2D-массива в JTextField - PullRequest
1 голос
/ 06 мая 2019

Я не нашел ответа на свой вопрос в архиве.
У меня проблемы с установкой последовательности чисел 5x5 в моем поле jtext.Это мой код

private void btnperformAction(java.awt.event.ActionEvent evt) {                                                           
        int [][] boardOne = defineBoard(); //initializes matrix   
        fillBoard(boardOne); //adds integers values to the matrix
        int i,j;

        for(i = 0; i < boardOne.length; i++){
            for(j = 0; j < boardOne[i].length; j++){
                txtField.setText(txtField.getText() + boardOne[i][j]); 
         }
        }

И вот как мне нужно, чтобы вывод отображался.

    5   16  36  52  70  
    8   26  35  60  73  
    12  23  -1  51  74  
    3   27  34  59  68  
    14  30  47  64  80  

И что я получаю на своем поле jtextfield, это

5
16
36
52
70
8
26
35
60
73
12
23
-1
51
74
3
27
34
59
68
14
30
47
64
80

Как я могу отформатировать в формате 5x5?Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Как уже упоминалось в вашем предыдущем вопросе для матрицы 4x4, вы можете использовать StringBuilder следующим образом

StringBuilder builder = new StringBuilder();
for(int i = 0; i < boardOne.length; i++){
    for(int j = 0; j < boardOne[i].length; j++){
        builder.append(boardOne[i][j]);
        builder.append(" ");
    }
    builder.append("\n");
}

txtField.setText(builder.toString());

Обратите внимание, что это просто строка, разделенная пробелом.Он не выровняет интервал так, чтобы он выглядел как идеальная сетка, как в вашем вопросе.Для такой вещи вам нужно будет рассчитать точное пространство, необходимое для заполнения.Так что, если это важно для вас, перейдите на JTable.

1 голос
/ 06 мая 2019

Вам необходимо использовать JTextArea и добавить символ новой строки в конце каждой строки. Если вы используете JTextField, он не может поддерживать многострочный режим, он только в одной строке. Вставьте код в любой файл Java и выполните метод main.

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

class Scratch {
    public static void main(String[] args) {
        JFrame frm = new JFrame();
        JTextArea txtArea = new JTextArea();
        txtArea.setPreferredSize(new Dimension(500,500));
        JButton btn = new JButton("DO ARRANGE");
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int[][] boardOne = new int[][]{
                        {5,   16,  36,  52,  70},
                        {8,   26,  35,  60,  73},
                        {12,  23,  -1,  51,  74},
                        {3,   27,  34,  59,  68},
                        {14,  30,  47,  64,  80}
                };
                int i, j;
                StringBuilder sb = new StringBuilder();
                for (i = 0; i < boardOne.length; i++) {
                    for (j = 0; j < boardOne[i].length; j++) {
                        sb.append(boardOne[i][j]);
                        if (j < boardOne[i].length - 1) {
                            sb.append(" ");
                        }
                    }
                    sb.append("\r\n");
                }
                txtArea.setText(sb.toString());

            }
        });
        frm.getContentPane().setLayout(new BorderLayout());
        frm.getContentPane().add(btn, BorderLayout.NORTH);
        frm.getContentPane().add(txtArea, BorderLayout.CENTER);
        frm.pack();
        frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frm.setVisible(true);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...