Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Управление компонентом из другой формы

29K
13 мая 2008 года
nereus
7 / / 02.10.2007
Eсть функция:

public void updateList() {
System.out.println(jListName.getSelectedValue());
System.out.println("Ok");
}


если запустить из этой же формы:
updateList();
то работает нормально.

если запустить из другого диалога:
FrameWorker.getInstance().updateList();
то для jListName.getSelectedValue()
пушет null, т.е. не находит

как можно решить проблему?
63
13 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Javadoc для этого метода JList читал?

P.S. Что ты понимаешь под "формой"? JFrame?
Полный код FrameWorker в студию.
29K
14 мая 2008 года
nereus
7 / / 02.10.2007
Javadoc конечно же читал. Это вопрос специфический - там такого и близко нет.

Под формой да понимаю JFrame.

Полный код в студию не получится там куча всего!

Небольшие куски, пожалуйста:
[highlight=java]
public class FrameWorker extends javax.swing.JInternalFrame {

public static FrameWorker Instance;
private int hist= -2;
private String[][] list;
private SelectionL sel = new SelectionL();

class SelectionL implements ListSelectionListener {
public void valueChanged(ListSelectionEvent lse) {
int selected = ((JList)lse.getSource()).getSelectedIndex();
if (selected != hist) {
inputWorkerData(list[0][jListName.getSelectedIndex()]);
hist = selected;
}
}
}
// конструктор
public FrameWorker() {
initComponents();
jListName.addListSelectionListener(sel); //подключение события изменения выделенного элемета в JList
try {
// возвращает массив с серверной части.
list = Connection.getInstance().connect.setList("0");
}
catch (Exception ex) {
System.out.println("Ошибка создания списка сотрудников");
}
KolWorker();
}
// для обращения к FrameWorker
public static FrameWorker getInstance() {
if ( Instance == null )
Instance = new FrameWorker();
return Instance;
}
// Возвращает из двумерного массива массив имен.
private String[] ListName(String[][] ls, String t) {
try {
int count = Connection.getInstance().connect.Count2("Worker", t);
// формирование одномерного массива ФИО сотрудников
if (count == 0) {
isZero();
isEnabled(false);
jButton19.setEnabled(false);
return new String[0];
}
else {
String[] arr = new String[count];
for (int i=0; i<=count-1; i++) {
arr = ls[1];
}
return arr;
}
} catch(Exception ex) {
System.out.println("Ошибка Возвращает из двумерного массива массив имен");
return new String[0];}
}
// инициализация списка сотрудников
public void InitList() {
jListName.setListData(ListName(list, "0"));
jListName.setSelectedIndex(0);
}
// инициализация списка сотрудников после добавление сотрудника
public void updateList() {
try {
//list = Connection.getInstance().connect.setList();
//jListName.clearSelection();
//jListName.setListData(ListName(list));
//jListName.setSelectedIndex(1);
System.out.println(jListName.getSelectedValue());
System.out.println("Ok");
}
catch (Exception ex) {
System.out.println("Ошибка создания списка сотрудников");
}
//jListName.setSelectedIndex(0);
}
[/highlight]
Поясню по-подробнее проблему:
создаю JInternalFrame, на ней находится JList (список сотрудников). Нажимаю кнопку добавить сотрдника - открывается модальный диалог с вводом информации о сотруднике.
После ввода информации нажимаю на кнопку добавить на диалоге - вот здесь нужно обновить JList на JInternalFrame.
Для тестирования всего этого я создал вот ту функцию updateList(), из которой не могу даже вывести выделенный элемент не говоря уже об обновлении всего листа.
63
15 мая 2008 года
Zorkus
2.6K / / 04.11.2006
С исключениями ты работаешь худшим возможным образом.
Мало того, что ты их перехватываешь на самом высоком уровне иерархии (что в принципе очень плохо!),
так ты еще и отбрасываешь те данные, на основании которых ты мог бы найти причину ошибки.
1)Выводить, кстати, было бы удобней с помошью спец. средств логирования (вроде Log4j), тогда бы была возможность поменяв строчку в конфиге сделать вывод не на консоль, а в файл, изменять уровень подробности логов и прочее.
2)Перехватывай только checked exceptions, которые объявляют используемые тобой методы, после чего выводи в логи полный стектрейс,
и опционально текущее состояние интересующих тебя объектов.
3) Отладчиком не пробовал пройтись по этому методу? Поставить брекпоинты перед тем, как у тебя выдается неверный результат, и посмотреть значения переменных в этот момент времени.
63
16 мая 2008 года
Zorkus
2.6K / / 04.11.2006
Советую почитать Джошуа Блоха, "Java. Эффективное программирование".
Там в том числе интересные приемы работы с исключениями рассмотрены.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог