2016-11-08 3 views
0

Я создаю программу, которая собирает пару списков файлов, которые соответствуют определенному набору критериев, и манипулирует ими по мере необходимости в зависимости от источника, типа файла и т. Д. Я надеюсь, что он найдет файлы и отобразит их в списке, который легко читать. Пользователь будет выбирать, какие файлы будут обрабатываться из списка, а затем нажать кнопку, которая «начнет волнение», если вы это сделаете.JTable и его связь с источником данных

Прямо сейчас, я сделал класс, называемый DrawingFile, который выглядит как:

class DrawingFile { 

private static String fileName, fileType; 
private static boolean actionable; 
private static Path filePath; 

public DrawingFile (Path path){ 
    setFilePath(path); 
    setFileName(stripExtension(path)); 
    setFileType(getExtension(path)); 
    setActionable(true); 
} 
...(methods omitted to save time)... 

Мой план, первоначально должен был создать JTable, заполняющий основанный на Список DrawingFiles с каждым из полей в объекты, являющиеся столбцом в таблице, кроме Пути, которые не будут отображаться в таблице. Оттуда пользователь нажмет флажок, который будет определять, будет ли файл манипулировать.

Мои проблемы связаны прежде всего с тем, что я относительно новичок в программировании. Это первая программа, которую я написал, которую люди собираются использовать, которая также имеет какой-то пользовательский интерфейс.

В таких мои вопросы:

  1. ли мой план выше имеет никакого смысла вообще?
  2. Было бы разумнее оставить стол из него и создать серию JPanels внутри контейнера? (похоже, это не было бы лучшей практикой)
  3. Если я поеду со столом, должен ли я отказаться от класса DrawingFile и сохранить данные в TableModel? 3a. Если да, есть ли способ скрыть Путь в таблице?
  4. Как мне изменить значение actionable boolean, когда оно (un) отмечено на таблице?
  5. По шкале от 1 до 10, как сильно я это переусердствую?

ответ

1
  1. Если я правильно понимаю, у вас есть список объектов DrawingFile, и хочет, чтобы отобразить этот список как JTable, где каждая строка представляет объект списка. Да, это имеет смысл.
  2. Нет. Стол идеально подходит для этого.
  3. № Вам следует создать собственный класс DrawingFileTableModel, расширяющий AsbtractTableModel и используя список объектов в качестве источника для реализации метода. Google для «Java-учебника JTable», и вы найдете пример в the official tutorial.
  4. Убедившись, что isCellEditable() возвращает true для этой колонки и строки, а также путем правильной реализации методов setValueAt() и getColumnClass(). Javadoc и учебник - ваши друзья здесь. setValueAt(), при вызове с индексом логического столбца, должен установить новое значение в DrawingFile, хранящемся в указанном индексе строки в списке поддержки. getColumnClass(), когда вызывается с индексом булевского столбца, должен возвращать Boolean.class.
+0

Рад видеть, что я на правильном пути. Я хотел связать этот учебник, но должен был забыть, когда я печатал. Если вы не возражаете, все в порядке, если я напечатаю то, что, по-моему, методы, о которых вы говорили, должны выглядеть, и вы смотрите на них? –

+0

Вы можете это сделать. Но самый простой способ - просто проверить, работает ли он так, как ожидалось. –

+1

Действительно. Работает как сон. Спасибо за вашу помощь. –

Смежные вопросы