используя таблицу в другом классе - PullRequest
0 голосов
/ 21 июля 2009

Я создал JTable в одном классе, теперь мне нужно использовать ту же таблицу, чтобы установить в ней какое-то значение, в другом классе. Как я должен использовать тот же JTable в этом другом классе. скажите пожалуйста.

Ответы [ 5 ]

2 голосов
/ 21 июля 2009

Вам не нужен второй класс для доступа к реальной таблице, только к базовой TableModel. Это может быть достигнуто многими способами:

  • Открытый метод getTableModel() в первом классе, который второй может использовать для получения ссылки на модель
  • Оба класса сохраняют ссылку на модель, которая устанавливается при создании их экземпляров
  • Открытый метод addValue() в первом классе, который берет значение и добавляет его к табличной модели, не раскрывая саму модель. Это лучшее решение, если вам нужно выполнять только очень специфические операции, такие как добавление значений.

Какой метод лучше всего подходит для вас, зависит от вашего конкретного сценария.

1 голос
/ 21 июля 2009

Может быть, я слишком анальный, когда дело доходит до инкапсуляции, но я бы обычно не раскрывал TableModel или сам JTable. В классе, содержащем JTable, я бы создал методы для добавления / удаления / установки значений JTable. При необходимости я мог бы также использовать класс с JTable для наблюдения за службой, которая может изменять свои данные.

0 голосов
/ 21 июля 2009

Если вам нужно отредактировать значения, почему бы вам не поработать над моделью таблицы?

JTable.getModel ()

(или getTableModel (), я не помню)

0 голосов
/ 21 июля 2009

Класс, содержащий JTable, должен каким-то образом выставить это поле. Альтернативно и , предпочтительно , класс может предоставить метод для изменения некоторого значения в JTable. Класс other должен ссылаться на класс, содержащий JTable (напрямую или нет):

class A {
   private JTable myJTable;

   public JTable getMyJTable() {
      return myJTable;
   }

   public void setMyJTableValue(Object value) {
      // set the value accordingly
   }
}

class B {

   private A a;

   public void methodWithAccessToA() {
      // business logic ...
      a.setMyJTableValue(myBusinessValue);
      // ...
      a.getMyJTable().setValue(myBusinessValue);
   }

}
0 голосов
/ 21 июля 2009

Добавьте открытый метод в классе, который включает JTable, который установит значение и вызовет этот метод из всех других классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...