2015-04-24 2 views
0

У меня возникли проблемы с изменением значения частной переменной (класса, реализующего интерфейс), который находится внутри реализации интерфейса.Изменение значения частной переменной внутри реализации интерфейса

У меня есть интерфейс IClient:

public interface IClient{ 

    void showNewArticles(Article a); 
} 

и класс клиент, который реализует IClient:

public class Client implements IClient{ 

(....) 

private DefaultListModel<String> listModelArticles = new DefaultListModel<>(); 

(....) 

@Override 
public void showNewArticles(Article a){ 

    String infoArticle = ("["+a.getKeyword().toUpperCase()+"] "+a.getTitle()); 

    listModelArticles.addElement(infoArticle); 
    listArticles.setModel(listModelArticles); 
} 

} 

Проблема заключается в том, что, когда я выполнить метод showNewArticles(), он не добавляет элемент в listModelArticles, но если я создаю частный или общедоступный метод (внутри класс Клиента) и выполнить в нем listModelArticles.addElement(infoArticles), информация вставляется в модель правильно. Что-то связано с модификаторами доступа?

+1

'он не добавляет элемент в списокModelArticles' Откуда вы знаете? В любом случае, как вы определяете размер 'listModelArticles'? – copeg

+4

'Что-то делать с модификаторами доступа?' Определенно нет –

+0

@copeg Я проверил содержимое '' listModelArticles' в отладчике. Извините, я написал неправильную строку в начале класса Client. Это не '' listModelSubscriptions'', это '' listModelArticles''. – regmoraes

ответ

0

Я нашел решение. Это была проблема с классом, который вызывает метод IClient класса Client. Спасибо всем, кто пытался решить мою проблему :)

Мое решение:

@Override 
public void showNewArticles(Article a) throws RemoteException { 

    IClient client = MainController.getInstance().getClient(); 
    client.showNewArticles(a); 
} 

До решения:

@Override 
public void showNewArticles(Article a) throws RemoteException { 

    ClientI.getInstance().showNewArticles(a); 
} 

Я не знаю, почему она не работала до того, хотя Я использовал Синглтон. Но теперь это работает.

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