Загрузка данных
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame window = new JFrame("Dota 2 Stats");
window.setSize(1000, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocationRelativeTo(null);
// Главная панель
JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
mainPanel.setBorder(
BorderFactory.createEmptyBorder(15, 15, 15, 15)
);
// =========================
// ЗАГОЛОВОК
// =========================
JLabel title = new JLabel(
"Dota 2 Stats",
SwingConstants.CENTER
);
title.setFont(
new Font("Arial", Font.BOLD, 30)
);
JLabel subtitle = new JLabel(
"Статистика игроков текущего матча",
SwingConstants.CENTER
);
subtitle.setFont(
new Font("Arial", Font.PLAIN, 16)
);
JPanel header = new JPanel(
new GridLayout(2, 1)
);
header.add(title);
header.add(subtitle);
// =========================
// ТАБЛИЦА
// =========================
String[] columns = {
"Игрок",
"Герой",
"Ранг",
"Winrate",
"Матчи",
"KDA",
"Dotabuff"
};
Object[][] players = {
{
"Player 1",
"Invoker",
"Immortal",
"58%",
"1240",
"3.2",
"Открыть"
},
{
"Player 2",
"Pudge",
"Divine",
"54%",
"980",
"2.8",
"Открыть"
},
{
"Player 3",
"Juggernaut",
"Ancient",
"51%",
"1540",
"2.5",
"Открыть"
},
{
"Player 4",
"Axe",
"Legend",
"49%",
"870",
"2.1",
"Открыть"
},
{
"Player 5",
"Lion",
"Legend",
"52%",
"1100",
"2.7",
"Открыть"
}
};
DefaultTableModel model =
new DefaultTableModel(players, columns) {
@Override
public boolean isCellEditable(
int row,
int column
) {
return false;
}
};
JTable table = new JTable(model);
table.setRowHeight(40);
table.setFont(
new Font("Arial", Font.PLAIN, 14)
);
table.getTableHeader().setFont(
new Font("Arial", Font.BOLD, 14)
);
table.setSelectionMode(
ListSelectionModel.SINGLE_SELECTION
);
JScrollPane scrollPane =
new JScrollPane(table);
// =========================
// НИЖНЯЯ ПАНЕЛЬ
// =========================
JPanel bottomPanel =
new JPanel(new BorderLayout());
JLabel status =
new JLabel(" Статус: готово");
status.setFont(
new Font("Arial", Font.PLAIN, 14)
);
JButton updateButton =
new JButton("Обновить статистику");
updateButton.addActionListener(e -> {
status.setText(
" Статус: получение данных..."
);
Timer timer = new Timer(
1500,
event -> status.setText(
" Статус: данные обновлены"
)
);
timer.setRepeats(false);
timer.start();
});
bottomPanel.add(
status,
BorderLayout.WEST
);
bottomPanel.add(
updateButton,
BorderLayout.EAST
);
// =========================
// СОБИРАЕМ ОКНО
// =========================
mainPanel.add(
header,
BorderLayout.NORTH
);
mainPanel.add(
scrollPane,
BorderLayout.CENTER
);
mainPanel.add(
bottomPanel,
BorderLayout.SOUTH
);
window.setContentPane(mainPanel);
window.setVisible(true);
}
}