كيف يمكنني إخفاء صف (جعل غير مرئية) في JTable؟

StackOverflow https://stackoverflow.com/questions/944006

  •  09-09-2019
  •  | 
  •  

سؤال

هل هناك أي طريقة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

ال أفضل أسهل طريقة ستكون لإزالة العنصر المقابل من النموذج.

نصائح أخرى

هنالك ال RowFilter<DefaultTableModel, Object> فئة يمكنك استخدامها لتصفية الصفوف. يمكن استبدال DefaultTableModel بالنموذج الخاص بك. لتصفية، قم بتنفيذ الطريقة

@Override
public boolean include(Entry entry) {
    // All rows are included if no filter is set
    if (filterText.isEmpty())
        return true;

    // If any of the column values contains the filter text,
    // the row can be shown
    for (int i = 0; i < entry.getValueCount(); i++) {
        String value = entry.getStringValue(i);
        if (value.toLowerCase().indexOf(filterText) != -1)
            return true;
    }

    return false;
}

عند الوصول إلى الصفوف، على سبيل المثال، تستمع إلى LetwertelectrectionEctivents، لا تنس ترجم فهرس الصف المرئي إلى مؤشر الصف الكامل في النموذج الخاص بك. يوفر Java وظيفة لهذا أيضا:

public void valueChanged(ListSelectionEvent e) {
    ListSelectionModel lsm = (ListSelectionModel) e.getSource();

    int visibleRowIndex = ... // Get the index of the selected row

    // Convert from the selection index based on the visible items to the
    // internal index for all elements.
    int internalRowIndex = tableTexts
            .convertRowIndexToModel(visibleRowIndex);

    ...
}

الدفع دروس الشمس ل JTAMS والنظر في قسم الفرز والتصفية.

يمكنك إعداد مقيفين لكل عمود يتم تعبئتها بواسطة القيم التي تمت تصفيتها وتطبيقها في عارض مخصص. إذا لم يتم تلبية قيم الصف الخلايا بأكملها، يستدعي العارض مكالمات متكررة مع الصف + 1.

إذا قام صف الخلايا في تلبية المعايير، فسيصبح، يخزن مجموعة متنوعة أخرى أرقام الصف المقدمة بالفعل، وأوضح أفضل شرح حسب المثال هذه الطريقة في عارض العملاء يمتد إلى Jlabel

public Component getTableCellRendererComponent(JTable table, Object color,
        boolean isSelected, boolean hasFocus, int row, int column) {

    Object value;
    String s;

    try {
        if (row == 0) {
            drawn[column].clear();
        }// drawn is arraylist which stores cols rend
        if (row > table.getModel().getDataVector.size()) {
            return null;
        }// if we go too far
        if (drawn[column].contains(Integer.toString(row)) == true) {
            // already rendered?
            return getTableCellRendererComponent(table, color, isSelected,
                    hasFocus, (row + 1), column);
        }// render row+1

        for (int i = 0; i < filters.length; i++) {
            value = table.getModel().getValueAt(row, i);
            s = (i == 1) ? df.format(value) : value.toString();
            if (filters[i].contains(s) != true) {
                //try and put in next row, if succeeds when it reaches column 8 it adds row to
                return getTableCellRendererComponent(table, color,
                        isSelected, hasFocus, (row + 1), column);
            }
        }

        value = table.getModel().getValueAt(row, column);

        setFont(getFont().deriveFont(Font.BOLD));

        if ((isSelected == false)) {

            if ((column == 1)) {
                setForeground(Color.magenta);
            }// just formatting
            else {
                setForeground(Color.black);
                setBackground(Color.white);
            }

        } else {
            setBackground(Color.blue);
            setForeground(Color.white);
        }

        if ((column == 1))// col 1 is a date, other columns strings
        {
            setText((value == null) ? "" : df.format(value));
        } else {
            setText((value == null) ? "" : value.toString());
        }

        todayStr = df.format(new java.util.Date());
        dateval = table.getModel().getValueAt(row, 1);
        String datevalStr = df.format(dateval);
        if (datevalStr.equals(todayStr)) {
            setForeground(Color.red);
        }
        drawn[column].add(Integer.toString(row));// mark row as rendered

    } catch (Exception e) {
        e.getMessage();
        return null;
    }
    return this;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top