Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package devin;
- import java.awt.Dimension;
- import java.awt.FlowLayout;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import javax.swing.*;
- import javax.swing.event.DocumentEvent;
- import javax.swing.event.DocumentListener;
- public class Square
- {
- public static void main(String[] args)
- {
- javax.swing.SwingUtilities.invokeLater(new Runnable()
- {
- public void run()
- {
- Init();
- }
- });
- }
- public static JFrame frame;
- private static void Init()
- {
- frame = new JFrame("ReplaceThisDevinWithYourAppName");
- frame.setMinimumSize(new Dimension(300,400));
- frame.setMaximumSize(new Dimension(3000,4000));
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- val_list = new int[box_size][box_size];
- JMenuBar menuBar = new JMenuBar();
- frame.setJMenuBar(menuBar);
- JMenu mnFile = new JMenu("File");
- menuBar.add(mnFile);
- JMenuItem mntmNew = new JMenuItem("New");
- JMenuItem mntmRead = new JMenuItem("Read");
- JMenuItem mntmSave = new JMenuItem("Save");
- JMenuItem mntmClose = new JMenuItem("Close");
- mntmClose.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event) {
- System.exit(0);
- }});
- mntmRead.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event) {
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
- int result = fileChooser.showOpenDialog(frame);
- if (result == JFileChooser.APPROVE_OPTION)
- {
- File selectedFile = fileChooser.getSelectedFile();
- try
- {
- ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileChooser.getSelectedFile().getAbsolutePath()));
- try {
- byte[] read = (byte[]) ois.readObject();
- deserialize(read);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- catch(IOException ex)
- {
- ex.printStackTrace();
- }
- }
- }});
- mntmSave.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
- int result = fileChooser.showSaveDialog(frame);
- if (result == JFileChooser.APPROVE_OPTION)
- {
- File selectedFile = fileChooser.getSelectedFile();
- try
- {
- FileOutputStream out = new FileOutputStream(fileChooser.getSelectedFile().getAbsolutePath());
- ObjectOutputStream oout = new ObjectOutputStream(out);
- byte[] data = serialize();
- oout.writeObject(data);
- oout.flush();
- oout.close();
- }
- catch(IOException ex)
- {}
- }
- }});
- mntmNew.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event) {
- frame.dispose();
- Init();
- }});
- mnFile.add(mntmNew);
- mnFile.add(mntmRead);
- mnFile.add(mntmSave);
- mnFile.add(mntmClose);
- create_main_ui();
- if(requires_update)
- {
- requires_update = false;
- deserialize(temp_datas);
- }
- }
- public static int box_size = 4;
- public static JPanel mainPanel = new JPanel();
- public static void create_main_ui()
- {
- JButton button = new JButton();
- button.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- if(isMagic() == true)
- {
- System.out.println("true");
- infoBox("It is a Magic Box","Check Magic");
- }
- else
- {
- System.out.print("false");
- infoBox("It is not a Magic Box","Check Magic");
- }
- }
- });
- JPanel panel = new JPanel();
- JLabel label = new JLabel("N: = ");
- JTextField textfield_1 = new JTextField(2);
- textfield_1.setText(""+box_size);
- textfield_1.getDocument().addDocumentListener(new DocumentListener()
- {
- public void changedUpdate(DocumentEvent e) {
- warn();
- }
- public void removeUpdate(DocumentEvent e) {
- warn();
- }
- public void insertUpdate(DocumentEvent e) {
- warn();
- }
- public void warn()
- {
- try {
- int count = Integer.parseInt(textfield_1.getText());
- if(count > 1 && count != box_size)
- {
- box_size = count;
- frame.dispose();
- Init();
- }
- } catch(NumberFormatException ex ){}
- }
- });
- button.setText("Check");
- panel.setLayout(new FlowLayout());
- panel.add(label);
- panel.add(textfield_1);
- panel.add(button);
- mainPanel = new JPanel();
- mainPanel.setLayout(new GridLayout(0,1));
- mainPanel.add(panel);
- if(box_size > 1)
- mainPanel.add(create_magic_box(box_size));
- frame.setLocationRelativeTo(null);
- frame.setResizable(true);
- frame.pack();
- frame.setVisible(true);
- frame.add(mainPanel);
- }
- public static java.util.ArrayList<JTextField> text_fields= new java.util.ArrayList<JTextField> ();
- public static JPanel ipanel = new JPanel();
- public static int i;
- public static int j;
- public static JPanel create_magic_box(int N)
- {
- text_fields.clear();
- ipanel = new JPanel();
- ipanel.setLayout(new GridLayout(N,N));
- ipanel.setAlignmentX(100);
- for( i = 0 ; i < N ; i++)
- {
- for( j = 0; j < N; j++)
- {
- JTextField text_field = new JTextField(2);
- text_field.setToolTipText(i+","+j);
- text_field.getDocument().addDocumentListener(new DocumentListener()
- {
- public void changedUpdate(DocumentEvent e) {
- warn();
- }
- public void removeUpdate(DocumentEvent e) {
- warn();
- }
- public void insertUpdate(DocumentEvent e) {
- warn();
- }
- public void warn()
- {
- try {
- int val = Integer.parseInt(text_field.getText());
- String[] str = text_field.getToolTipText().split(",");
- add(val,Integer.parseInt(str[0]),Integer.parseInt(str[1]));
- } catch(NumberFormatException ex ){}
- }
- });
- ipanel.add(text_field);
- text_fields.add(text_field);
- }
- }
- return ipanel;
- }
- public static int[][] val_list;
- public static void add(int val , int x, int y)
- {
- System.out.println("X:"+x+",Y:"+y);
- val_list[x][y] = val;
- }
- public static void infoBox(String infoMessage, String titleBar)
- {
- JOptionPane.showMessageDialog(null, infoMessage, "InfoBox: " + titleBar, JOptionPane.INFORMATION_MESSAGE);
- }
- public static boolean isMagic()
- {
- boolean sum_set= false;
- int sum = 0;
- //line checker
- for(int p = 0 ; p < box_size ; p++)
- {
- int sum_temp = 0;
- for(int t = 0 ; t < box_size ; t++)
- {
- sum_temp += val_list[p][t];
- }
- if(sum_set == false)
- {
- sum_set = true;
- sum = sum_temp;
- }
- else if(sum != sum_temp){
- return false;}
- }
- //row checker
- for(int p = 0 ; p < box_size ; p++)
- {
- int sum_temp = 0;
- for(int t = 0 ; t < box_size ; t++)
- {
- sum_temp += val_list[t][p];
- }
- if(sum != sum_temp){
- return false;}
- }
- //main diag
- int sum_temp = 0;
- for(int p = 0 ; p < box_size ; p++)
- {
- sum_temp += val_list[p][p];
- }
- if(sum != sum_temp){
- return false;}
- //2'nd diag
- sum_temp = 0;
- for(int p = 0 ; p < box_size ; p++)
- {
- sum_temp += val_list[p][box_size - p - 1];
- }
- if(sum != sum_temp){
- return false;}
- return true;
- }
- public static byte[] serialize()
- {
- String data = "";
- data = "" +box_size;
- for(int p = 0 ; p < box_size ; p++)
- {
- for(int t = 0 ; t < box_size ; t++)
- {
- data += "," + val_list[p][t] ;
- }
- }
- return data.getBytes();
- }
- public static boolean requires_update = false;
- public static byte[] temp_datas;
- public static void deserialize(byte[] data)
- {
- String temp_data = new String(data);
- String[] vals = temp_data.split(",");
- temp_datas = data;
- if(box_size != Integer.parseInt(vals[0]))
- {
- requires_update = true;
- box_size = Integer.parseInt(vals[0]);
- frame.dispose();
- Init();
- }
- else
- {
- for(int p = 0 ; p < box_size * box_size; p++)
- {
- text_fields.get(p).setText(""+Integer.parseInt(vals[p+1]));
- text_fields.get(p).repaint();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement