столкнулся с одной вещью. У меня идут данные с телефона на компьютер и они отображаются в окне JFrame. Решил попробовать сделать с SwingWorker, чтобы он подгружал новые данные, при этом не открывая новые окна. Сейчас это выглядит в виде: пришел ответ - открывается новое окно с подгруженными данными, при этом старое окно остается открытым до конца работы программы. Написал реализацию метода doInBackground(), но уверен, что сделал все неправильно. Не могли бы вы помочь разобраться, как это лучше всего реализовать, а также исправить мой метод doInBackground(). Данные, при поступлении, записываются в HashMap и далее передаются в класс SimpleTableDemo.Заранее спасибо.
public class SimpleTableDemo extends JFrame {
private static final String[] columnNames = { "Судья", "Ответ" };
private final JTable table;
private static SwingWorker swingWorker;
public SimpleTableDemo() {
super("Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(1, 0));
table = new JTable(new Object[0][0], columnNames) {
@Override
public Class getColumnClass(int column) {
switch (column) {
case 1:
return String.class;
default:
return Object.class;
}
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
};
table.setPreferredScrollableViewportSize(new Dimension(500, 80));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
pack();
setVisible(true);
swingWorker = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
Map<Object,String> newMap = new HashMap<Object, String>();
newMap = Server.getAnswerMap();
return newMap;
}
};
}
public void setData(Map<Object,String> map) {
Object[][] data = map.entrySet()
.stream()
.map(e -> new Object[] { e.getKey(), e.getValue() })
.toArray(Object[][]::new);
table.setModel(new DefaultTableModel(data, columnNames));
}
private static void start() {
SimpleTableDemo demo = new SimpleTableDemo();
Map<Object,String> map = new HashMap<>();
demo.setData(map);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(SimpleTableDemo::start);
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно определить находится ли треугольники модели(орел) внутри прямоугольной плоскостиНаписал программу, но отрисовка почему- то работает...
Всем приветКогда нажимаешь на картинку в приложении картинка открываеться в полный рост
Имеется Строка String Packet в которой записываетются данные а-ля FA0023CC и массив byte[] P = new byte[Packetlength()/2]в который нужно загнать данные по типу 0xFA 0x00 0x23 0xCC Пишу...