Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 3
Регистрация: 19.02.2015
Сообщений: 66

JTable and ArrayList

02.10.2015, 00:45. Показов 2335. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Доброе время суток

Условие такое, считать всю информацию с txt файла и вставить в таблицу.
txt такой:

Name<TAB>Capital<TAB>Population
Republic of Poland<TAB>Warsaw<TAB>34500
Chech Republic<TAB>Prague<TAB>9500
Kingdom of Spain <TAB>Madrid<TAB>41599

отступы через Таб

Name Capital Population
Republic of Poland Warsaw 38500
Chech Republic Prague 10500
Kingdom of Spain Madrid 46599

Название столбцов берется тоже с txt файла.
И выделить красным цветом строку в которой населении больше 20 тысяч.
Но проблема в том, что я все написал, но считать с файла и вставить в таблице не могу, долго мучаюсь уже.
Можете помочь с кодом.



Заранее спасибо
Вложения
Тип файла: zip end.zip (7.9 Кб, 3 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2015, 00:45
Ответы с готовыми решениями:

ArrayList и JTable
Здравствуйте! Пишу программу для анализа данных, в частности, расчета матрицы корреляции. Данные вытаскиваю из excel-файла в двумерный...

Поиск в ArrayList и запись результата в JTable
в общем есть код на поиск в массиве ArrayList arr: private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { ...

Выделенные ряды jTable добавить в ArrayList
Доброго времени суток! Задача такая: есть таблица, в которой хранятся объекты класса, мне надо выделить несколько рядов таблицы с этими...

4
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
02.10.2015, 13:44
Krowli, Тут вряд ли кто-то будет скачивать твой файл, если ты выложишь код так то может кто и поможет
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
02.10.2015, 14:22
Цитата Сообщение от Krowli Посмотреть сообщение
проблема в том, что я все написал, но считать с файла и вставить в таблице не могу
А что написал-то, в таком случае? Наформошлёпил в редакторе интерфейс?
0
1 / 1 / 3
Регистрация: 19.02.2015
Сообщений: 66
02.10.2015, 18:08  [ТС]
иван я, Сейчас выложу код
Класс CountriesTable где и есть ошибка в считывания данных с файла и ввода их в таблицу
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class CountriesTable extends JFrame {
    public CountriesTable(String path) {
        super("Zadanie 1");
        String json = "";
        
        
        
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader("data/countries.txt"));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String line;
        List<String> lines = new ArrayList<String>();
        try {
            while ((line = reader.readLine()) != null) {
                lines.add(line);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
 
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JTable table = new JTable();
        table.getColumnModel().getColumn(0).setCellRenderer(new CountryPopulationRenderer());
        
        add(new JScrollPane(table));
        pack();
        setVisible(true);
    }
    
    public static void main(String args[]) {
        new CountriesTable("data.dat");
    }
}
Класс CountriesTableModel тут прописана таблица, но проблема в том, что колоны тут создаю я , а не через файл.
Тут я тоже не знаю как это сделать.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.util.ArrayList;
import java.util.List;
 
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
 
public class CountriesTableModel implements TableModel {
 
    private List<Country> data;
    private String[] columns = new String[] {"Strana", "Stolica", "Populacja"};
    private TableModelListener modelListener;
 
    public CountriesTableModel(List<Country> list) {
        this.data = list;
    }
 
    @Override
    public int getRowCount() {
        if(data == null)
            return 0;
        return data.size();
    }
 
    @Override
    public int getColumnCount() {
        return columns.length;
    }
    
    public void addRow(Country c) {
        if(data == null)
            data = new ArrayList<Country>();
        data.add(c);
        int row = data.size();
        modelListener.tableChanged(new TableModelEvent(this, row-1, row, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
    }
 
    @Override
    public String getColumnName(int columnIndex) {
        return columns[columnIndex];
    }
 
    @Override
    public Class<?> getColumnClass(int columnIndex) {
        switch(columnIndex) {
        case 0:
        case 1:
        case 3:
            
        default:
            return Integer.class;
        }
    }
 
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }
 
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if(data == null)
            return null;
        switch(columnIndex) {
        case 0:
            return data.get(rowIndex).getName();
        case 1:
            return data.get(rowIndex).getCapitol();
        case 2:
            return data.get(rowIndex).getPopulation();
        }
        return null;
    }
 
    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        // TODO Auto-generated method stub
 
    }
 
    @Override
    public void addTableModelListener(TableModelListener l) {
        this.modelListener = l;
    }
 
    @Override
    public void removeTableModelListener(TableModelListener l) {
        // TODO Auto-generated method stub
 
    }
 
}
 
}
Класс Country для ArrayList
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.Serializable;
 
public class Country implements Serializable {
    private String countryName;
    private String capital;
    private long population;
 
    
    public Country(String name, String capitol, long population, String code) {
        this.countryName = name;
        this.capital = capitol;
        this.population = population;
 
    }
 
    public String getName() {
        return countryName;
    }
 
    public String getCapitol() {
        return capital;
    }
 
    public long getPopulation() {
        return population;
    }
 
}
Класс CountryPopulationRenderer
Выделении красным цветом тех, у кого людей больше 20000000
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.awt.Color;
import java.awt.Component;
import java.net.MalformedURLException;
import java.net.URL;
 
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
 
public class CountryPopulationRenderer implements TableCellRenderer {
 
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        JLabel l = new JLabel(value.toString());
        if(Long.parseLong(table.getModel().getValueAt(row, 2).toString()) > 20000000)
            l.setForeground(Color.RED);
        return l;
    }
 
}
Добавлено через 31 секунду
aleksandy, Выложил код и описал каждого значение.
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
05.10.2015, 07:47
Цитата Сообщение от Krowli Посмотреть сообщение
Java
1
List<String> lines = new ArrayList<String>();
Вот это тебе зачем? Ты же нигде потом считанные данные не используешь. И параметризовать надо не строчкой, а Country. Вместо
Цитата Сообщение от Krowli Посмотреть сообщение
Java
1
lines.add(line);
должно быть
Java
1
2
3
4
5
6
lines.add(parseCountry(line));
...
Country parseCountry(String line) {
  String[] vals = line.split("\t");
  return new Country(vals[0], vals[1], Long.parseLong(vals[2]), null); // кода страны в примере txt файла нет
}
В качестве самостоятельной работы прикрути фильтр на отсечение заголовка в текстовом файле.

Цитата Сообщение от Krowli Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Override
@Override
public Class<?> getColumnClass(int columnIndex) {
    switch(columnIndex) {
        case 0:
        case 1:
        case 3:
        default:
            return Integer.class;
    }
}
...
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    if(data == null)
        return null;
    switch(columnIndex) {
        case 0:
            return data.get(rowIndex).getName();
        case 1:
            return data.get(rowIndex).getCapitol();
        case 2:
            return data.get(rowIndex).getPopulation();
    }
    return null;
}
Без комментариев, тут надо просто включить думалку.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2015, 07:47
Помогаю со студенческими работами здесь

Как данные с ArrayList поместить в JTable?
Всем привет! Есть 4 ArrayLista T, La, Lo, A. Как данные из этих листов поместить в JTable, чтобы каждый лист был в отдельной колонке? ...

Как реализовать JTable в которым данные берутся из ArrayList?
Всем привет. Я знаю как сделать обычный JTable в который данные добавляются только один раз при компилировании. Как реализовать JTable в...

Базовые вопросы(в основном о JTable и ArrayList)
Здравствуйте, уважаемые форумчане! Битый час сижу рядом с гуглом и с различными форумами, в голову все кошмарно перепуталось, надеюсь на...

В классе Use объявить ArrayList и добавить в каждый элемент ArrayList ID, Name, Text, Song
народ помогите есть класс Card и класс Use, код бросил, namespace KURSOVA { class Card { public string Name {...

ArrayList: необработанное исключение. Операции над множествами с использованием ArrayList
Задача: разработать калькулятор для логических множеств ( для операций пересечение, объединение, разность и симметричная разность). Сделано...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru