Вывод HashMap в окно JFrame [требует правки]

180
26 апреля 2018, 11:41

Появилось небольшое курсовое задание. Я передаю данные с телефона на компьютер по Wi-Fi через сокеты. У меня 6 ролей в андроид-приложении и от каждого я получаю определенный ответ и записываю его в HashMap. Приложение нужно сделать на JFrame. Как вывести содержимое моей Map в окно JFrame? Основная проблема, что окно в JFrame должно постоянно обновляться, т.к. не все будут одновременно нажимать на кнопку. Если можно, то с примером кода, т.к. давно не работал с JFrame. Ответы вроде "загугли" или "да ты вообще ничего не знаешь, иди учи" не принимаются. Спасибо за понимание. Если нужен пример моего кода, то напишите. Заранее спасибо.

Answer 1

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

public class SimpleTableDemo extends JFrame {
    // Имена колонок
    private static final String[] columnNames = { "Судья", "Засчитано" };
    private final JTable table;
    public SimpleTableDemo() {
        super("Demo");
        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 Boolean.class;
                    default:
                        return String.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);
    }
    private void setData(Map<String, Boolean> 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<String, Boolean> map = new HashMap<>();
        map.put("Kathy", false);
        map.put("John", true);
        map.put("Sue", false);
        map.put("Jane", true);
        map.put("Joe", false);
        demo.setData(map);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(SimpleTableDemo::start);
    }
}

Получится так

READ ALSO
Как получить текст между определёнными HTML-тегами с помощью Jsoup

Как получить текст между определёнными HTML-тегами с помощью Jsoup

Я делаю парсер для одной веб-страницы с помощью Jsoup, и мне нужно, чтобы он получал текст, заключённый между тегами <h5> и </h5>Как это сделать?

211
добавление модуля Import .JAR/.AAR Package

добавление модуля Import .JAR/.AAR Package

Не могу добавить библиотеку ниJAR ни

217
Не могу подключиться к БД (Oracle) при помощи JDBC Thin driver

Не могу подключиться к БД (Oracle) при помощи JDBC Thin driver

Извиняюсь за возможно глупый вопрос, я новичок и только разбираюсь

273
Сериализация DTO объекта. Json

Сериализация DTO объекта. Json

Есть класс Building

191