Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2015
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.24 KB | None | 0 0
  1. package devin;
  2.  
  3. import java.awt.Dimension;
  4.  
  5. import java.awt.FlowLayout;
  6. import java.awt.GridLayout;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.io.File;
  10. import java.io.FileInputStream;
  11. import java.io.FileOutputStream;
  12. import java.io.IOException;
  13. import java.io.ObjectInputStream;
  14. import java.io.ObjectOutputStream;
  15.  
  16. import javax.swing.*;
  17. import javax.swing.event.DocumentEvent;
  18. import javax.swing.event.DocumentListener;
  19.  
  20. public class Square
  21. {
  22. public static void main(String[] args)
  23. {
  24. javax.swing.SwingUtilities.invokeLater(new Runnable()
  25. {
  26. public void run()
  27. {
  28. Init();
  29.  
  30. }
  31. });
  32. }
  33. public static JFrame frame;
  34. private static void Init()
  35. {
  36.  
  37.  
  38. frame = new JFrame("ReplaceThisDevinWithYourAppName");
  39.  
  40. frame.setMinimumSize(new Dimension(300,400));
  41. frame.setMaximumSize(new Dimension(3000,4000));
  42. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  43.  
  44. val_list = new int[box_size][box_size];
  45.  
  46. JMenuBar menuBar = new JMenuBar();
  47. frame.setJMenuBar(menuBar);
  48.  
  49. JMenu mnFile = new JMenu("File");
  50. menuBar.add(mnFile);
  51.  
  52. JMenuItem mntmNew = new JMenuItem("New");
  53. JMenuItem mntmRead = new JMenuItem("Read");
  54. JMenuItem mntmSave = new JMenuItem("Save");
  55. JMenuItem mntmClose = new JMenuItem("Close");
  56.  
  57. mntmClose.addActionListener(new ActionListener()
  58. {
  59. public void actionPerformed(ActionEvent event) {
  60. System.exit(0);
  61. }});
  62.  
  63. mntmRead.addActionListener(new ActionListener()
  64. {
  65. public void actionPerformed(ActionEvent event) {
  66. JFileChooser fileChooser = new JFileChooser();
  67. fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
  68. int result = fileChooser.showOpenDialog(frame);
  69.  
  70. if (result == JFileChooser.APPROVE_OPTION)
  71. {
  72. File selectedFile = fileChooser.getSelectedFile();
  73.  
  74. try
  75. {
  76. ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileChooser.getSelectedFile().getAbsolutePath()));
  77.  
  78. try {
  79. byte[] read = (byte[]) ois.readObject();
  80. deserialize(read);
  81. } catch (ClassNotFoundException e) {
  82. e.printStackTrace();
  83. }
  84. }
  85. catch(IOException ex)
  86. {
  87. ex.printStackTrace();
  88. }
  89. }
  90. }});
  91.  
  92. mntmSave.addActionListener(new ActionListener()
  93. {
  94. public void actionPerformed(ActionEvent event)
  95. {
  96. JFileChooser fileChooser = new JFileChooser();
  97. fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
  98. int result = fileChooser.showSaveDialog(frame);
  99.  
  100. if (result == JFileChooser.APPROVE_OPTION)
  101. {
  102. File selectedFile = fileChooser.getSelectedFile();
  103.  
  104. try
  105. {
  106. FileOutputStream out = new FileOutputStream(fileChooser.getSelectedFile().getAbsolutePath());
  107. ObjectOutputStream oout = new ObjectOutputStream(out);
  108.  
  109. byte[] data = serialize();
  110. oout.writeObject(data);
  111. oout.flush();
  112. oout.close();
  113. }
  114. catch(IOException ex)
  115. {}
  116. }
  117.  
  118.  
  119. }});
  120.  
  121. mntmNew.addActionListener(new ActionListener()
  122. {
  123. public void actionPerformed(ActionEvent event) {
  124. frame.dispose();
  125. Init();
  126. }});
  127.  
  128. mnFile.add(mntmNew);
  129. mnFile.add(mntmRead);
  130. mnFile.add(mntmSave);
  131. mnFile.add(mntmClose);
  132.  
  133. create_main_ui();
  134.  
  135. if(requires_update)
  136. {
  137. requires_update = false;
  138. deserialize(temp_datas);
  139. }
  140. }
  141.  
  142.  
  143. public static int box_size = 4;
  144.  
  145. public static JPanel mainPanel = new JPanel();
  146. public static void create_main_ui()
  147. {
  148. JButton button = new JButton();
  149. button.addActionListener(new ActionListener()
  150. {
  151. public void actionPerformed(ActionEvent e)
  152. {
  153. if(isMagic() == true)
  154. {
  155. System.out.println("true");
  156. infoBox("It is a Magic Box","Check Magic");
  157. }
  158. else
  159. {
  160. System.out.print("false");
  161. infoBox("It is not a Magic Box","Check Magic");
  162. }
  163. }
  164. });
  165. JPanel panel = new JPanel();
  166. JLabel label = new JLabel("N: = ");
  167. JTextField textfield_1 = new JTextField(2);
  168. textfield_1.setText(""+box_size);
  169. textfield_1.getDocument().addDocumentListener(new DocumentListener()
  170. {
  171. public void changedUpdate(DocumentEvent e) {
  172. warn();
  173. }
  174. public void removeUpdate(DocumentEvent e) {
  175. warn();
  176. }
  177. public void insertUpdate(DocumentEvent e) {
  178. warn();
  179. }
  180.  
  181. public void warn()
  182. {
  183. try {
  184. int count = Integer.parseInt(textfield_1.getText());
  185.  
  186. if(count > 1 && count != box_size)
  187. {
  188. box_size = count;
  189. frame.dispose();
  190. Init();
  191. }
  192. } catch(NumberFormatException ex ){}
  193.  
  194. }
  195. });
  196.  
  197. button.setText("Check");
  198. panel.setLayout(new FlowLayout());
  199. panel.add(label);
  200. panel.add(textfield_1);
  201. panel.add(button);
  202.  
  203. mainPanel = new JPanel();
  204. mainPanel.setLayout(new GridLayout(0,1));
  205. mainPanel.add(panel);
  206.  
  207. if(box_size > 1)
  208. mainPanel.add(create_magic_box(box_size));
  209.  
  210. frame.setLocationRelativeTo(null);
  211. frame.setResizable(true);
  212. frame.pack();
  213. frame.setVisible(true);
  214. frame.add(mainPanel);
  215. }
  216.  
  217.  
  218. public static java.util.ArrayList<JTextField> text_fields= new java.util.ArrayList<JTextField> ();
  219. public static JPanel ipanel = new JPanel();
  220. public static int i;
  221. public static int j;
  222. public static JPanel create_magic_box(int N)
  223. {
  224. text_fields.clear();
  225. ipanel = new JPanel();
  226. ipanel.setLayout(new GridLayout(N,N));
  227. ipanel.setAlignmentX(100);
  228. for( i = 0 ; i < N ; i++)
  229. {
  230. for( j = 0; j < N; j++)
  231. {
  232. JTextField text_field = new JTextField(2);
  233. text_field.setToolTipText(i+","+j);
  234.  
  235. text_field.getDocument().addDocumentListener(new DocumentListener()
  236. {
  237. public void changedUpdate(DocumentEvent e) {
  238. warn();
  239. }
  240. public void removeUpdate(DocumentEvent e) {
  241. warn();
  242. }
  243. public void insertUpdate(DocumentEvent e) {
  244. warn();
  245. }
  246.  
  247. public void warn()
  248. {
  249. try {
  250. int val = Integer.parseInt(text_field.getText());
  251. String[] str = text_field.getToolTipText().split(",");
  252. add(val,Integer.parseInt(str[0]),Integer.parseInt(str[1]));
  253. } catch(NumberFormatException ex ){}
  254.  
  255. }
  256. });
  257. ipanel.add(text_field);
  258. text_fields.add(text_field);
  259. }
  260. }
  261.  
  262. return ipanel;
  263. }
  264.  
  265.  
  266. public static int[][] val_list;
  267.  
  268. public static void add(int val , int x, int y)
  269. {
  270. System.out.println("X:"+x+",Y:"+y);
  271. val_list[x][y] = val;
  272. }
  273.  
  274. public static void infoBox(String infoMessage, String titleBar)
  275. {
  276. JOptionPane.showMessageDialog(null, infoMessage, "InfoBox: " + titleBar, JOptionPane.INFORMATION_MESSAGE);
  277. }
  278.  
  279.  
  280.  
  281.  
  282. public static boolean isMagic()
  283. {
  284. boolean sum_set= false;
  285. int sum = 0;
  286. //line checker
  287. for(int p = 0 ; p < box_size ; p++)
  288. {
  289. int sum_temp = 0;
  290.  
  291. for(int t = 0 ; t < box_size ; t++)
  292. {
  293. sum_temp += val_list[p][t];
  294. }
  295.  
  296. if(sum_set == false)
  297. {
  298. sum_set = true;
  299. sum = sum_temp;
  300. }
  301. else if(sum != sum_temp){
  302. return false;}
  303. }
  304.  
  305. //row checker
  306. for(int p = 0 ; p < box_size ; p++)
  307. {
  308. int sum_temp = 0;
  309.  
  310. for(int t = 0 ; t < box_size ; t++)
  311. {
  312. sum_temp += val_list[t][p];
  313. }
  314.  
  315. if(sum != sum_temp){
  316. return false;}
  317. }
  318.  
  319. //main diag
  320. int sum_temp = 0;
  321. for(int p = 0 ; p < box_size ; p++)
  322. {
  323. sum_temp += val_list[p][p];
  324.  
  325. }
  326. if(sum != sum_temp){
  327. return false;}
  328.  
  329. //2'nd diag
  330. sum_temp = 0;
  331. for(int p = 0 ; p < box_size ; p++)
  332. {
  333. sum_temp += val_list[p][box_size - p - 1];
  334.  
  335. }
  336. if(sum != sum_temp){
  337. return false;}
  338.  
  339. return true;
  340. }
  341.  
  342. public static byte[] serialize()
  343. {
  344. String data = "";
  345. data = "" +box_size;
  346. for(int p = 0 ; p < box_size ; p++)
  347. {
  348. for(int t = 0 ; t < box_size ; t++)
  349. {
  350. data += "," + val_list[p][t] ;
  351. }
  352. }
  353. return data.getBytes();
  354. }
  355.  
  356. public static boolean requires_update = false;
  357. public static byte[] temp_datas;
  358. public static void deserialize(byte[] data)
  359. {
  360. String temp_data = new String(data);
  361.  
  362. String[] vals = temp_data.split(",");
  363.  
  364. temp_datas = data;
  365.  
  366. if(box_size != Integer.parseInt(vals[0]))
  367. {
  368. requires_update = true;
  369. box_size = Integer.parseInt(vals[0]);
  370. frame.dispose();
  371. Init();
  372. }
  373. else
  374. {
  375. for(int p = 0 ; p < box_size * box_size; p++)
  376. {
  377. text_fields.get(p).setText(""+Integer.parseInt(vals[p+1]));
  378. text_fields.get(p).repaint();
  379. }
  380. }
  381. }
  382. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement