Как отобразить массив пользователю - PullRequest
0 голосов
/ 28 ноября 2008

Я пытаюсь отобразить содержимое упорядоченного массива во что-то вроде JTextField.

for (int i=0; i<array.length; i++) {
    this.textField.setText(array[i]);
}

Это не сработает по двум причинам. Первая незначительная причина: если длина массива равна 4, то jtextfield получает его значение сбрасывается 4 раза, а не добавляет каждый элемент в последний. Вторая причина: JTextField принимает только строки. Я не могу найти ничего, что я мог бы использовать в Swing, который позволил бы мне отображать целые числа для пользователя. Любая помощь?

Ответы [ 2 ]

8 голосов
/ 28 ноября 2008

Быстрый и грязный ответ

for (int i=0; i<array.length; i++) {
    this.myJTextField.setText(this.myJTextField.getText() + ", " + array[i]);
}

Правильный путь

Во-первых, вызывать переменную-член JTextField, вероятно, не разумно. Так как класс уже называется так, он будет путать читателей. Соглашения об именах в переменных-членах состояния Java, например, myTextField. (примечание: исходный вопрос изменен).

Пользовательский формат

Обратите внимание, что вы можете преобразовать любое число в строку, просто выполнив "" + number. Если у вас много строк, рассмотрите возможность использования построителя строк, поскольку это быстрее и не будет обновлять элемент GUI несколько раз: (также исправляет начальный ", " перед первым элементом, что происходит выше)

StringBuilder builder = new StringBuilder();
for (int i=0; i<array.length; i++) {
    builder.append(array[i]));
    if(i + 1 != array.length) 
        builder.append(", ");
}
this.myJTextField.setText(builder.toString());

Каноническое представление массива

Кроме того, вы можете использовать это:

this.myJTextField.setText(Arrays.toString(array));

Это будет выглядеть как [1, 4, 5, 6].

0 голосов
/ 28 ноября 2008

Вы можете объединить все эти целые числа в строку, а затем представить это значение в текстовом поле.

StringBuilder sb = new StringBuilder();
for( int i : array ) {  // <-- alternative way to iterate the array
     sb.append( i );
     sb.append( ", " );
}

sb.delete(sb.length()-2, sb.length()-1); // trim the extra ","
textField.setText( sb.toString() );

Вы также можете использовать JTextArea вместо текстового поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...