Краткое содержание : Какие варианты выбора звуковой архитектуры существуют для отображения потоково-динамических данных в реальном времени с использованием Swing?
Подробности : У меня естьнедавно завершил написание многопоточной, автоматической торговой платформы на Java.Я говорю «платформа», потому что я упростила реализацию новых и нескольких торговых программ путем подкласса виртуальных объектов.Я инкапсулировал торговый код, чтобы я мог использовать его в приложении Swing, консольном приложении или где-либо еще.В настоящее время я использую его с интерфейсом Swing.
Я бы сказал, что я не пользователь, а пользователь Swing.Не специально.Требуется особое мышление, чтобы разработать современный графический интерфейс и интегрировать его с динамическими данными, которые мне еще предстоит изучить.Я знаю самые основы, такие как обновление экрана только в ветке отправки событий.Вот как я отображаю сообщения (из моего SingleFrameApplication
подкласса):
private class PrintTraderMsgTask extends SwingWorker<Void, String>{
@Override
protected Void doInBackground() {
String msg;
while(!isCancelled()){
msg = m_data.m_TraderMsgs.poll();
if(msg!=null){
publish(msg);
}
}
return null;
}
@Override
protected void process(List<String> chunks) {
for (String item: chunks){
m_view.displayTraderString(item);
}
}
}
Элемент данных здесь просто
public ArrayBlockingQueue<String> m_TraderMsgs;
, который любое количество «трейдеров» (отдельных потоков)может быть вставлять сообщения в любое время.Другой тип объекта данных, который я использовал, это ConcurrentHashMap
.Я собираю журналы заказов, торговые записи, цены и другие виды данных в них.Таким образом, рисунок, который я пытаюсь нарисовать здесь, представляет собой большой набор зависящих от времени данных, слишком большой, чтобы отображать их все сразу.
Что я действительно хотел бы сделать, так это отобразить сводную информацию и иметь возможность детализироватьвниз.Прямо сейчас я отображаю сообщения в JTextAreas
и другую информацию в некоторых JTextFields
.Я могу прочитать о JCool, что бы там ни было, и заполнить данные.Но прежде чем начать этот путь, я хочу узнать о других вариантах архитектуры.
Метод 1 : Используйте SwingWorkers, чтобы захватить данные и вставить их в JWhatever
, который находится в моем FrameView
подкласс.
Метод 2 : ???
...
Мы хотим:
(1) разумную модульность .. достаточно, чтобы добавлять / удалять элементы, не портя наш вечер
(2)возможность взаимодействия, в частности возможность детализации, поскольку данных так много
Спасибо ... отображение сложного набора динамических данных в режиме реального времени является интересной темой, и я надеюсь, что мы сможем провести хорошую дискуссию,