гибкий контейнер и ngIf центр по горизонтали

AbstractTableModel содержит три метода, которые необходимо перезаписать. Это:

public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);

JTable использует эти методы для определения количества полей (строк и столбцов) и получения значения (как объекта типа) для каждого поля. Когда вы переписываете эти методы, вам нужен тип данных, которые вы хотите использовать. Например, вы можете использовать двухмерный массив объектов:

Object[][] data;

или ArrayList или Hashtable:

List data = new ArrayList();

. Размер массива с размерами может быть проще в использовании, но это больше трудно динамически добавлять значения. Конечно, вы также можете использовать Карты или другие структуры данных. Вам просто нужно скорректировать реализацию трех вышеупомянутых методов, чтобы вернуть правильную информацию из вашей структуры данных, например, сколько строк в вашей модели в настоящее время и т. Д.

Есть еще несколько методов, которые можно перезаписать , но не нужно, например, если вы хотите иметь собственные имена столбцов, вы должны дополнительно перезаписать метод public String getColumnName(int col). Например, например:

private static final String[] COLUMN_NAMES = {"User", "Password", "Age"};
public String getColumnName(int col) {
    return COLUMN_NAMES[col];
}

Посмотрите на Javadoc для AbstractTableModel , чтобы получить обзор других методов, которые могут быть перезаписаны.

Если вы хотите чтобы иметь возможность изменять данные в вашем TableModel, вам необходимо перезаписать метод setValueAt (если я не ошибаюсь):

void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    //depending on your data structure add the aValue object to the specified
    //rowIndex and columnIndex position in your data object
    //notify the JTable object:
    fireTableCellUpdated(row, col);
}

Важно: всякий раз, когда вы добавляете или удаляете строку, соответствующая функция в вашей реализации TableModel должна вызвать соответствующую функцию fireTableRowsInserted (или удалить). В противном случае вы увидите странные визуальные эффекты с вашим JTable:

public void addRow(Object[] dates) {
    data.add(dates);
    int row = data.indexOf(dates);
    for(int column = 0; column < dates.length; column++) {
        fireTableCellUpdated(row, column);
    }
    fireTableRowsInserted(row, row);
}

0
задан cucuru 13 July 2018 в 10:29
поделиться

2 ответа

Для элементов, которые вы хотите быть видимыми все время, примените:

position: absolute

Для использования оранжевого элемента

bottom: 0;

, а для желтого

используйте право: 0, верх: 50%;

Если вы хотите получить более подробную информацию, напишите скрипку для того же

0
ответ дан Charu Maheshwari 17 August 2018 в 13:08
поделиться

Проблема, с которой вы сталкиваетесь с желтым элементом, заключается в том, что с вашим стилем вы рассматриваете его как элемент родительского / контейнерного элемента flexbox, тогда как вы действительно хотите рассматривать его как дочерний элемент для своего родителя.

Добавление следующего родительского div должно центрировать желтую рамку:

<div fxFlexFill fxLayout="column" fxLayoutAlign="center center">

Еще одна проблема, с которой вам придется столкнуться, заключается в том, что, когда вы программно добавляете в свой дополнительные элементы, они будут течь с желтым div. В зависимости от того, чего вы хотите достичь с точки зрения макета, возможно, вам нужно пересмотреть способ, которым вы хотите выложить элементы, хотя из вашего сообщения неясно, как вы намереваетесь их выложить, когда дополнительные элементы добавлено на страницу.

0
ответ дан lordchancellor 17 August 2018 в 13:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: