Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> txt > table 
:(
    Опции темы
XClan
Дата 19.10.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



У меня файл имеет целый список , как мне сделать чтобы я мог из списка допустим
Код

нина
24
1972
13
дима
31
1980
15
настя
90
1908
102

чтобы в
Код
 
row[0] = String("нина"); // также дима,настя 
row[1]  = String("24"); //31,90
row[2] = String ("1972"); //1980,1908
row[3] = String("13"); //15,102

То есть каждае 4 строчки подвергаются вставке на одну строчку таблицы..



--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
igon
Дата 20.10.2005, 04:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



У DefaultTableModel есть метод
Код

setDataVector(Vector rows, Vector columnIdentifiers)

Код (почти псевдо) будет примерно такой
Код

Vector rows = new Vector();
String  currentValue; 
while (!EOF) // Пока файл не закончился
{
  Vector currentRow = new Vector();
  for ( int i = 1; i = 4; ++i )
    {
      currentValue = .readln(); // Считываем построчно
      currentRow.addElement(currentValue);
    }
  rows.addElement(currentRow);
}
...
tableModel.setDataVector(rows, columnHeads);




--------------------
Хотите поговорить об этом?
PM   Вверх
XClan
  Дата 26.10.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Я все еще пытаюсь вставить их! Но таблица чего-то не отображается! Может я в чем-то ошибся??
Пожалуйста подскажите..
Код

protected void openDocumentShow() {
        try
        {
            jTable1 = new javax.swing.JTable();
            jScrollPane1 = new javax.swing.JScrollPane();
            jTable1.setModel(new javax.swing.table.DefaultTableModel(
            
            new Object [][] {
                {null, null, null, null, null, null}
            },
            new String [] {
                "Name", "ID", "Age", "Happy", "City", "E-mail"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
            
        });
            
            DefaultTableModel modelk = (DefaultTableModel)jTable1.getModel();
            System.out.println("Create table :" + modelk);
            while(modelk.getRowCount() > 0)
                modelk.removeRow(0);
            modelk.fireTableDataChanged();
            jTable1.repaint();
            jScrollPane1.setViewportView(jTable1);
            WinTables.add(jScrollPane1);
            BufferedReader br = new BufferedReader(new InputStreamReader(ResultViewer.class.getResourceAsStream("./test100.txt")));
            while ((str = br.readLine()) != null) 
                {
                    Object [][] oo=initPn(str);
                    if(oo != null)
                        for(int i=0; i < oo.length; i++)
                            modelk.addRow(oo[i]);
            }
            modelk.fireTableDataChanged();
            jTable1.repaint();
            System.out.println("table views result : " + jTable1.getModel().getRowCount());
            } 
        
        catch (FileNotFoundException fnfe) 
        {
          System.out.println(fnfe);
        }
        catch (IOException ioe) 
        {
          System.out.println(ioe);
        }
        finally
        { 
          if (br !=null)
          {      
           try
           {
             br.close();
           }
           catch (Exception ignored)
           {
             System.out.println(ignored);
           }
          }
        }
    }

где
Код

public Object[][] initPn(String str){
        String []a = str.split("(\\s*\\|\\s*|\\s*->\\s*)");
            for(int i=0; i< a.length; i++){
                String [] row = new String[6];
                row[0] = new String(a[0]);
                row[1] = new String(a[1]);
                row[2] = new String(a[2]);
                row[3] = new String(a[3]);
                row[4] = new String(a[4]);
                row[5] = new String(a[5]);
                System.out.println("For ROW1 :" +a[0]+"For ROW2 :" +a[1]+"For ROW3 :" +a[2]+"For ROW4 :" +a[3]+"For ROW5 :" +a[4]+"For ROW6 :" +a[5]);
            }
        return null;
       }

System.out.println - нормально печатает, но при открытии интерфейса - таблица отсутвует! Такое чувство, что оно удалено.. если я правильно понял.. smile


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
batigoal
Дата 26.10.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Ну еще бы. Ты ведь возвращаешь из initPn() null вместо двухмерного массива smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
XClan
Дата 26.10.2005, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



То есть как это я возвращаю null?


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
batigoal
Дата 26.10.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Ты объявляешь, что метод initPn() должен вернуть двухмерный массив объектов. А в его конце ставишь return null.

И вообще, я не очень понимаю, что ты хочешь сделать в этом методе. Ты делаешь массив строк (a), потом формируешь другой массив row из первых 6-ти элементов массива a... и все. Наружу из метода ты ничего не возвращаешь.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
XClan
Дата 27.10.2005, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Без return null компилятор выдает ошибку missing return statement. smile


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
batigoal
Дата 27.10.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Цитата(XClan @ 27.10.2005, 13:27)
Без return null компилятор выдает ошибку missing return statement

Да, потому что ты должен вернуть двумерный массив.
Сейчас нет времени, вечером постараюсь написать, как должно быть.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
igon
Дата 28.10.2005, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Код

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class FillJTableFromTxtFile extends JPanel
  {
    public  Vector            columnHeads = new Vector();;
    public  DefaultTableModel tableModel  = new DefaultTableModel();
    public  JTable            table       = new JTable(tableModel);
    public  JScrollPane       scrollPane;
    public  String            currentValue;

    public FillJTableFromTxtFile() 
      {
        columnHeads.addElement("Name");
        columnHeads.addElement("ID");
        columnHeads.addElement("Age");
        columnHeads.addElement("Happy");
        columnHeads.addElement("City");
        columnHeads.addElement("E-mail");
        scrollPane = fillTable();
        add(scrollPane);
    }

    private JScrollPane fillTable()
      {
        Vector rows  = new Vector();
        try 
          {
            BufferedReader br = new BufferedReader(new InputStreamReader(FillJTableFromTxtFile.class.getResourceAsStream("test.txt")));
            int i = 1;
            Vector currentRow = new Vector();
            while (true)
              {
                currentValue = br.readLine();
                if (currentValue != null)
                  {
                    if (i>6)
                      {
                        i = 1;
                        rows.addElement(currentRow); 
                        currentRow = new Vector();     
                      }
                    i++;
                    currentRow.addElement(currentValue);
                  }
                else
                  {
                    rows.addElement(currentRow); 
                    br.close();
                    break;   
                  }
              }
            tableModel.setDataVector(rows, columnHeads);
            scrollPane = new JScrollPane(table);
          }
          catch (IOException e)
            {
              e.printStackTrace();                 
            }

        return scrollPane; 
      }

    private static void createAndShowGUI() {
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);

        //Create and set up the window.
        JFrame frame = new JFrame("JTableFromTxtFile");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Create and set up the content pane.
        FillJTableFromTxtFile newContentPane = new FillJTableFromTxtFile();
        newContentPane.setOpaque(true); //content panes must be opaque
        frame.setContentPane(newContentPane);

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}


Это сообщение отредактировал(а) igon - 28.10.2005, 11:40


--------------------
Хотите поговорить об этом?
PM   Вверх
XClan
Дата 31.10.2005, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Все замечательно понял.. Спасибо!
Я правда не смог сделать так чтобы отображалось 20 записей..
Код

            tableModel.setRowCount(20);

не помогает тут..


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
XClan
Дата 31.10.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Перед currentValue = br.readLine();
Код

for( int k =0; k<20; k++){
currentValue = br.readLine();
....
}

Не помогают!!!


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
XClan
Дата 2.11.2005, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Как мне взять индексирование строк в BufferedReader??
Код

BufferedReader br = new BufferedReader(new InputStreamReader(FillJTableFromTxtFile.class.getResourceAsStream("./rep100.txt")));
            
            int i = 1;    
            Vector currentRow = new Vector();
            while (true)    
              {
                  int p = br.readLine().charAt(); //Все равно не 20 строк 
                  for(int p =0; p<20; p++){       //, а все ставится на таблицу ( а строк там более 700 например )
                  currentValue = br.readLine();
                  if (currentValue != null)
                  {
                      
                    if(i>6)
                      {    
                        i = 1;    
                        rows.addElement(currentRow);    
                        currentRow = new Vector();      
                      }    
                    i++;
                    String []a = currentValue.split("(\\s*\\|\\s*|\\s*->\\s*)");
                    for(int k=0; k < a.length; k++){
                    currentRow.addElement(a[k]);
                    }
                  }        
                  }



--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
XClan
Дата 2.11.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Опа! Нашел ответ!!!
Всему виной была
Код
while (true)





--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
XClan
Дата 2.11.2005, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



Как перерисовать таблицу после нажатия на кнопку Next ( дальше )
Код

private void NextActionPerformed(java.awt.event.ActionEvent evt) {
        Vector rows  = new Vector();
        table.removeAll();
        try    
          {
            BufferedReader br = new BufferedReader(new InputStreamReader(FillJTableFromTxtFile.class.getResourceAsStream("./rep100.txt")));
            int i = 1;    
            Vector currentRow = new Vector();    
            int y = getIntTable();
            int u = y+y;
            for( int j =y; j<u; j++)
              {    
                currentValue = br.readLine();
                if (currentValue != null)    
                  {    
                    for(i=0;i>6;i++)
                      {    
                        i = 1;    
                        rows.addElement(currentRow);    
                        currentRow = new Vector();      
                      }    
                    i++;
                    String []a = currentValue.split("(\\s*\\|\\s*|\\s*->\\s*)");
                    for(int k=0; k < a.length; k++){
                    currentRow.addElement(a[k]);
                    }
                  }    
                else    
                  {    
                    rows.addElement(currentRow);
                    br.close();    
                    break;    
                  }    
              }    
            int h = y+y;
            setIntTable(h);
            if(getTable() == 0){
                tableModel.setDataVector(rows, columnHeads);
                table.repaint();
            }else{
                tableModel.setDataVector(rows, columnHeads1);
                table.repaint();
            }
          }    
          catch (IOException e)    
            {    
              e.printStackTrace();                  
            }    
        return;
    }

Что-то не перерисовываются таблицы.. Может не так надо обновлять таблицу??


--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
igon
Дата 3.11.2005, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



1. В исходной постановке утверждалось (и я исходил именно из этого), что в каждой строке txt файла содержится значение для ОДНОЙ ячейки таблицы. Каждый br.read() читает ОДНУ строку txt файла -> одну ЯЧЕЙКУ таблицы!
У тебя же, судя по коду, считывается строка сложной структуры, которая дополнительно парсится (split()) и потом раскладывается по ячейкам, т.е. каждый br.read() читает ОДНУ строку txt файла -> одну СТРОКУ таблицы. При таком варианте удивительно, что только while(true) у тебя оказался лишним... smile
2. ИМХО, проще считать в TableModel ВЕСЬ файл сразу, а потом по кнопкам (кроме Next наверняка будет и Previous!) делать нужный scroll в ScrollPane. Либо отображать только нужный диапазон записей, убрав вертикальную прокрутку(ну и что, что юзеру придется нажать Next 30 раз, чтобы добраться до 600-й записи? smile)
3. Если все же хочешь читать по кнопке очередной кусок файла, то br нужно создать ОДИН раз, а не при каждом нажатии кнопки (при этом, несмотря на for( int j =y; j<u; j++)), у тебя всякий раз считывается и благополучно перерисовывается одно и то же НАЧАЛО файла smile). Разумеется, про навигацию Previous в этом варианте, без дополнительных телодвижений, придется забыть...
4.
Код

int u = y+y 

Каким будет u после, скажем, 5-го нажатия кнопки?


--------------------
Хотите поговорить об этом?
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1874 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.