Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.FlowLayout;
- import java.awt.GridLayout;
- import java.awt.Image;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.File;
- import java.io.IOException;
- import java.util.Scanner;
- import javax.imageio.ImageIO;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JDialog;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTextField;
- import javax.swing.JTree;
- import javax.swing.border.EmptyBorder;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeCellRenderer;
- import javax.swing.tree.DefaultTreeModel;
- import javax.swing.tree.TreeSelectionModel;
- public class MyFrame extends JFrame {
- private static final long serialVersionUID = -2122161377842820073L;
- final static int COURSES_COUNT = 5;
- final static int GROUPS_COUNT = 15;
- private JTree tree;
- private DefaultTreeModel model;
- private DefaultMutableTreeNode root;
- private class MyDialog extends JDialog {
- private static final long serialVersionUID = 1120617742105530068L;
- public MyDialog() {
- super(MyFrame.this, true);
- final JTextField jtfName = new JTextField();
- final JTextField jtfCourse = new JTextField();
- final JTextField jtfGroup = new JTextField();
- JLabel lbName = new JLabel("Имя");
- JLabel lbCourse = new JLabel("Курс");
- JLabel lbGroup = new JLabel("Группа");
- JButton btOk = new JButton("Ок");
- JButton btCancel = new JButton("Отмена");
- btCancel.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent ae) {
- dispose();
- }
- });
- btOk.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent ae) {
- try {
- if (jtfName.getText().length() * jtfCourse.getText().length() * jtfGroup.getText().length() == 0) {
- throw new Exception();
- }
- String name = jtfName.getText();
- int course = Integer.parseInt(jtfCourse.getText());
- int group = Integer.parseInt(jtfGroup.getText());
- if (course < 1 || group < 1) {
- throw new Exception();
- }
- addStudent(course, group, name);
- dispose();
- } catch (Exception e) {
- JOptionPane.showMessageDialog(MyDialog.this, "Неверные данные", "Error", JOptionPane.ERROR_MESSAGE);
- }
- }
- });
- setLayout(new BorderLayout());
- JPanel panel = new JPanel(new GridLayout(6, 1));
- panel.setBorder(new EmptyBorder(0, 5, 0, 5));
- panel.add(lbName);
- panel.add(jtfName);
- panel.add(lbCourse);
- panel.add(jtfCourse);
- panel.add(lbGroup);
- panel.add(jtfGroup);
- add(panel, BorderLayout.CENTER);
- JPanel buttonsPanel = new JPanel(new FlowLayout());
- buttonsPanel.add(btOk);
- buttonsPanel.add(btCancel);
- add(buttonsPanel, BorderLayout.SOUTH);
- pack();
- setResizable(false);
- setVisible(true);
- }
- }
- ImageIcon createImageIcon(String path) {
- Image image;
- try {
- image = ImageIO.read(new File(path));
- } catch (IOException e) {
- return null;
- }
- return new ImageIcon(image);
- }
- private void initControls() {
- DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
- root = new DefaultMutableTreeNode("ФПМИ");
- model = new DefaultTreeModel(root, true);
- tree = new JTree(model);
- tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
- ImageIcon leafIcon = createImageIcon("images/leaf.png");
- if (leafIcon != null) {
- renderer.setLeafIcon(leafIcon);
- }
- ImageIcon folderIcon = createImageIcon("images/folder.png");
- if (folderIcon != null) {
- renderer.setClosedIcon(folderIcon);
- renderer.setOpenIcon(folderIcon);
- }
- getContentPane().setLayout(new BorderLayout());
- JButton btAdd, btRemove, btEdit;
- btRemove = new JButton("Удалить студента");
- btRemove.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent arg0) {
- if (tree.getSelectionPath() == null) return;
- DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent();
- if (!node.getAllowsChildren()) {
- DefaultMutableTreeNode parent = (DefaultMutableTreeNode)node.getParent();
- model.removeNodeFromParent(node);
- while (!parent.isRoot() && parent.isLeaf()) {
- node = parent;
- parent = (DefaultMutableTreeNode)node.getParent();
- model.removeNodeFromParent(node);
- }
- }
- }
- });
- btAdd = new JButton("Добавить студента");
- btAdd.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent arg0) {
- new MyDialog();
- }
- });
- btEdit = new JButton("Редактировать студента");
- btEdit.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent arg0) {
- if (tree.getSelectionPath() == null) return;
- DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent();
- if (!node.getAllowsChildren()) {
- int oldCount = root.getLeafCount();
- new MyDialog();
- if (root.getLeafCount() != oldCount) {
- DefaultMutableTreeNode parent = (DefaultMutableTreeNode)node.getParent();
- model.removeNodeFromParent(node);
- while (!parent.isRoot() && parent.isLeaf()) {
- node = parent;
- parent = (DefaultMutableTreeNode)node.getParent();
- model.removeNodeFromParent(node);
- }
- }
- }
- }
- });
- JPanel panel = new JPanel();
- panel.setLayout(new GridLayout(1, 3));
- panel.add(btAdd);
- panel.add(btRemove);
- panel.add(btEdit);
- getContentPane().add(panel, BorderLayout.NORTH);
- tree.setCellRenderer(renderer);
- JScrollPane scrollPane = new JScrollPane(tree);
- getContentPane().add(scrollPane, BorderLayout.CENTER);
- }
- private void addStudent(int course, int group, String name) {
- String s = course + " курс";
- DefaultMutableTreeNode v = null;
- if (root.getChildCount() > 0) {
- for (DefaultMutableTreeNode cur = (DefaultMutableTreeNode)root.getFirstChild(); cur != null; cur = (DefaultMutableTreeNode)root.getChildAfter(cur)) {
- if (cur.toString().equals(s)) {
- v = cur;
- }
- }
- }
- if (v == null) {
- v = new DefaultMutableTreeNode(s, true);
- model.insertNodeInto(v, root, 0);
- }
- s = group + " группа";
- DefaultMutableTreeNode u = null;
- if (v.getChildCount() > 0) {
- for (DefaultMutableTreeNode cur = (DefaultMutableTreeNode)v.getFirstChild(); cur != null;
- cur = (DefaultMutableTreeNode)v.getChildAfter(cur)) {
- if (cur.toString().equals(s)) {
- u = cur;
- }
- }
- }
- if (u == null) {
- u = new DefaultMutableTreeNode(s, true);
- model.insertNodeInto(u, v, 0);
- }
- v = u;
- u = new DefaultMutableTreeNode(name, false);
- model.insertNodeInto(u, v, 0);
- }
- private void readData() {
- File file = new File("data.txt");
- if (!file.exists()) {
- JOptionPane.showMessageDialog(this, "Данные не найдены", "Error", JOptionPane.ERROR_MESSAGE);
- System.exit(1);
- }
- try (Scanner sc = new Scanner(file)) {
- while (sc.hasNext()) {
- int course = sc.nextInt();
- int group = sc.nextInt();
- sc.skip("[\\s]+");
- String name = sc.nextLine();
- if (course < 1 || group < 1) {
- JOptionPane.showMessageDialog(this, "Ошибка в данных", "Error", JOptionPane.ERROR_MESSAGE);
- System.exit(1);
- }
- addStudent(course, group, name);
- }
- } catch (Exception e) {
- JOptionPane.showMessageDialog(this, "Ошибка при чтении файла", "Error", JOptionPane.ERROR_MESSAGE);
- System.exit(1);
- }
- }
- public MyFrame() {
- super();
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- initControls();
- readData();
- pack();
- setVisible(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment