Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Очистить таблицу


Автор: Samotnik 24.6.2007, 00:07
Здравствуйте!
Хотелось узнать следущее:
У меня есть таблица, каким способом ее можно очистить, от содержимого??? Дело в том, что это мне нужно для поиска, поиск работет(Кое-как  smile ), но при нахождении он найденную запись просто ставит на первую позицию, и остальные записи(10 штук!!), остаються на месте!!! А мне нужно, что бы по нажатию на кнопку поиск,  таблица стала чистой, и результаты поиска, вывелись в чистую таблицу без "лишних"  записей  .  
Вод.

Автор: Ulysses4j 24.6.2007, 00:40
А можно узнать, что за таблица имеется ввиду (класс...)?

Автор: nornad 24.6.2007, 02:21
Если модель таблицы наследована от DefaulTableModel, то можно поудалять строки с помощью removeRow(index) (берёшь модель от таблицы, кастишь к дефолтной и удаляешь строки).

Добавлено через 1 минуту и 13 секунд
А ещё проще ставить пустую (новую) модель таблицы. Но в некоторых случаях такой вариант не годится.

Автор: Samotnik 24.6.2007, 02:52
Цитата(Ulysses4j @  24.6.2007,  00:40 Найти цитируемый пост)
А можно узнать, что за таблица имеется ввиду? 

Конечно!
Код

public JTable table;
    public TableDemo() {
        super(new BorderLayout());
        table = new JTable(new MyTableModel());
        table.setPreferredScrollableViewportSize(new Dimension(700, 70));
        //Create the scroll pane and add the table to it.
        JScrollPane scrollPane = new JScrollPane(table);
        //Add the scroll pane to this panel.
        add(scrollPane);
         }

дале  обьявление  newContentPane
Код

static  TableDemo newContentPane;

и вот так заполняю
Код

   while(r.next())
    {
count1=r.getInt("BookID");
newContentPane.table.setValueAt(count1,i,0);
name1=r.getString("Title");
newContentPane.table.setValueAt(name1,i,1);
count=r.getInt("Quantum");
newContentPane.table.setValueAt(count,i,2);
date=r.getDate("PublishDate");
newContentPane.table.setValueAt(date,i,3);
name2=r.getString("Author");
newContentPane.table.setValueAt(name2,i,4);
i++;
}

Но вот перед эти заполнением, мне нужно ее сначало, как-то очистить, и потом только заполнять найденным!!!
2 nornad

Цитата(nornad @  24.6.2007,  02:21 Найти цитируемый пост)
Если модель таблицы наследована от DefaulTableModel, то можно поудалять строки с помощью removeRow(index) 

Сечас попробую 8))  !!!

Добавлено через 3 минуты и 34 секунды
Цитата(nornad @  24.6.2007,  02:21 Найти цитируемый пост)
то можно поудалять строки с помощью removeRow(index) 

Такой нету, есть только removeRowSelectionInterval()

Автор: nornad 24.6.2007, 06:40
Цитата(Samotnik @  24.6.2007,  05:52 Найти цитируемый пост)
Такой нету, есть только removeRowSelectionInterval() 

А ты ещё раз прочти моё предложение - помедленнее, повнимательнее:

Цитата(nornad @  24.6.2007,  05:21 Найти цитируемый пост)
Если модель таблицы наследована от DefaulTableModel, то можно поудалять строки с помощью removeRow(index)


А ты ищешь этот метод у самой таблицы, а не у модели. Иди, учи матчасть.  smile  smile 

Цитата(Samotnik @  24.6.2007,  05:52 Найти цитируемый пост)
и вот так заполняю

А где и как ты устанавливаешь количество строк и столбцов?

Автор: Samotnik 24.6.2007, 12:26
Цитата(nornad @  24.6.2007,  06:40 Найти цитируемый пост)
А где и как ты устанавливаешь количество строк и столбцов?

Здеся  smile 
Код

    newContentPane = new TableDemo();
        newContentPane.setBounds(20,50,450,145);       
        add(newContentPane);

Цитата(nornad @  24.6.2007,  06:40 Найти цитируемый пост)
Иди, учи матчасть.

Это тож верно, просто у меня в Шилде только одна страница про таблицы.  smile  А учить больше не по чем.!!!

Автор: nornad 24.6.2007, 13:59
Цитата(Samotnik @  24.6.2007,  15:26 Найти цитируемый пост)
А учить больше не по чем.!!! 

Скачай официальный javadoc.
Кстати, я Шилдта про жабу только просматривал. Как и про С#. Пришёл к выводу, что лучше бы он только про С++ писал и не лез в другие области - зачастую городит такое... Опять же, любая нормальная книжка по жабе при рассказе о таблицах отводит им хотя бы десяток страниц текста и описывает не только JTable, но и TableModel.

Цитата(Samotnik @  24.6.2007,  15:26 Найти цитируемый пост)
Здеся  smile 
    newContentPane = new TableDemo();
        newContentPane.setBounds(20,50,450,145);       
        add(newContentPane);

Что-то это не сильно похоже на установку количества строк в таблице. smile 

Автор: LSD 24.6.2007, 14:39
Цитата(Samotnik @  24.6.2007,  13:26 Найти цитируемый пост)
Это тож верно, просто у меня в Шилде только одна страница про таблицы.

Почитай Портянкина.

Автор: Samotnik 24.6.2007, 15:23
Цитата(nornad @  24.6.2007,  13:59 Найти цитируемый пост)
Что-то это не сильно похоже на установку количества строк в таблице.

Ой!.....  smile    Не то конечно
А вообщетто количество строк у меня не лимитированно!! Они беруться из базы, там их к примеру 5 , но если юзер еще 3 добавит то будет 8. А названия столбцов и количество вот:
Код

 class MyTableModel extends AbstractTableModel{
 Calendar cal = Calendar.getInstance();
            
   public   String[] columnNames = {
    "ID", "User Name", "Address", "Preferences"
                                };
 
      public  Object[][] data = new Object[25][5];

      public int getColumnCount() {
            return columnNames.length;
        }

      public int getRowCount() {
            return data.length;
        }

        public String getColumnName(int col) {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col) {
            return data[row][col];
        }
  
    
      public void setValueAt(Object value, int row, int col) {
            if (DEBUG) {
                System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            }

            data[row][col] = value;
            fireTableCellUpdated(row, col);

            if (DEBUG) {
                System.out.println("New value of data:");
                printDebugData();
            }
        }


Цитата(LSD @  24.6.2007,  14:39 Найти цитируемый пост)
Почитай Портянкина.

Если найду , обязательно!!

Автор: LSD 24.6.2007, 17:01
Цитата(Samotnik @  24.6.2007,  16:23 Найти цитируемый пост)
Если найду , обязательно!!

Поищи по форуму, уже неодкратно выкладывали.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)