Как сделать так, чтобы некоторые jtextfield & jlabel не появлялись в JPanel - PullRequest
0 голосов
/ 16 января 2019

В настоящее время я делаю графический интерфейс, который печатает текстовую область. В этой текстовой области мне необходимо получить «веса» для идентификатора переменной.

Я создал несколько меток, показывающих из ID1: - ID8: & их текстовые поля, и использую вместо них операторы if, но с количеством if и else if.

    if (id.size = 1){
    id1.setvisible(true);
    weight1TField.setvisible(true);
}else if (id.size = 2){
    id1.setvisible(true);
    weight1TField.setvisible(true);
    id2.setvisible(true);
    weight2TField.setvisible(true);
}
else if (if.size = 3){
    id1.setvisible(true);
    weight1TField.setvisible(true);
    id2.setvisible(true);
    weight2TField.setvisible(true);
    id3.setvisible(true);
    weight3TField.setvisible(true);
}

Так далее ... до ID8.

Значения добавляются в массив из jtable в другом Jframe, когда пользователь выбрал строки (максимум 8 строк).

List<String> ID = new ArrayList<>();

Я хочу создать текстовые поля, чтобы пользователь мог вводить свои веса и метки, показывая идентификатор рядом с текстовым полем, например, ID: TextField. Изображение показано ниже

ID [i] заменяется значением в массиве, если оно есть, а остальные скрыты, если значения нет. Как я могу создать Jlabels и JTexFields без выполнения следующих действий:

ID1.setText(ID[0]);
ID2.setText(ID[1]);
ID3.setText(ID[2]);
ID4.setText(ID[3]);
ID5.setText(ID[4]);
ID6.setText(ID[5]);
ID7.setText(ID[6]);
ID8.setText(ID[7]);

1 Ответ

0 голосов
/ 16 января 2019

Как насчет того, чтобы вместо использования полей (я не уверен, что вы используете поля, но единственное, что я могу сделать без дополнительного кода, это предположить) для хранения компонентов в массивах? Я сделал пример с JLabels, вы можете сделать то же самое с текстовыми полями.

private static int idsCount = 6; //The number of ids. Let's say 6
private JLabel[] labels = new JLabel[8]; // Keep the array as a field. (8 = max capacity)

private void initIDLabels {
    for (int i = 0; i < labels.length; i++) {
        labels[i] = new JLabel();
        // add this font to all labels.
        labels[i].setFont(new Font("Tahoma", Font.BOLD, 12));
    }
    changeLabelsVisibility();
}

private void changeLabelsVisibility() {
    // Hide all labels.
    for (JLabel label : labels) {
        label.setVisible(false);
    }
    // Show all labels that supposed to be visible
    for (int i = 0; i < idsCount; i++) {
        labels[i].setVisible(true);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...