{"id":670,"date":"2010-04-21T02:38:03","date_gmt":"2010-04-21T02:38:03","guid":{"rendered":"https:\/\/kweaver.org\/cs\/making-java-more-interesting\/"},"modified":"2010-04-21T02:38:03","modified_gmt":"2010-04-21T02:38:03","slug":"making-java-more-interesting","status":"publish","type":"post","link":"https:\/\/kweaver.org\/cs\/making-java-more-interesting\/","title":{"rendered":"Making Java more interesting"},"content":{"rendered":"<p>One of the things that drives me absolutely nuts about the Java materials I am using is that the majority of the programs are console programs.<\/p>\n<p>Sorry that really sucks when my regular children get to do real live Windows programs.<\/p>\n<p>So I have decided I am going to rewrite the labs so that they at least display the answer with Swing Frames and Panels.&#160; It\u2019s either that or rewrite them in C#, which I am also close to doing.&#160; Unfortunately we have a district final.<\/p>\n<p>We\u2019ve been purchasing Stacy Armstrong\u2019s materials so I am going to give some of the labs a try.&#160; He does some graphic programs where he has a runner that does the heavy work, so I think I\u2019m going to try the same thing with SWING.<\/p>\n<p>Frankly, this is more exciting can a console window.<\/p>\n<p><a href=\"http:\/\/www.kweaver.org\/.a\/6a00e54eea8ed988340133ecd5767c970b-pi\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"http:\/\/www.kweaver.org\/.a\/6a00e54eea8ed988340133ecd57683970b-pi\" width=\"195\" height=\"244\" \/><\/a> <\/p>\n<p>However, I am scared of this:<\/p>\n<pre class=\"csharpcode\"><span class=\"rem\">\/**<\/span>\n<span class=\"rem\"> * @(#)Lab02aFrame.java<\/span>\n<span class=\"rem\"> *<\/span>\n<span class=\"rem\"> * JFC Lab02a application<\/span>\n<span class=\"rem\"> *<\/span>\n<span class=\"rem\"> * @author <\/span>\n<span class=\"rem\"> * @version 1.00 2010\/4\/21<\/span>\n<span class=\"rem\"> *\/<\/span>\n<p>import java.awt.*;<br \/>\nimport java.awt.<span class=\"kwrd\">event<\/span>.*;<br \/>\nimport javax.swing.*;<br \/>\nimport javax.swing.BoxLayout;<\/p>\n<p><br \/>\n<span class=\"kwrd\">public<\/span> <span class=\"kwrd\">class<\/span> Lab02aFrame extends JFrame {<br \/>\n<br \/>\n<span class=\"rem\">\/**<\/span><br \/>\n<span class=\"rem\">     * The constructor<\/span><br \/>\n<span class=\"rem\">     *\/<\/span>  <br \/>\n<span class=\"kwrd\">public<\/span> Lab02aFrame() {<br \/>\n<br \/>\n<br \/>\n<br \/>\nJMenuBar menuBar = <span class=\"kwrd\">new<\/span> JMenuBar();<br \/>\nJMenu menuFile = <span class=\"kwrd\">new<\/span> JMenu();<br \/>\nJMenuItem menuFileExit = <span class=\"kwrd\">new<\/span> JMenuItem();<br \/>\n<br \/>\nmenuFile.setText(<span class=\"str\">&quot;File&quot;<\/span>);<br \/>\nmenuFileExit.setText(<span class=\"str\">&quot;Exit&quot;<\/span>);<br \/>\n<br \/>\n<span class=\"rem\">\/\/ Add action listener.for the menu button<\/span><br \/>\nmenuFileExit.addActionListener<br \/>\n(<br \/>\n<span class=\"kwrd\">new<\/span> ActionListener() {<br \/>\n<span class=\"kwrd\">public<\/span> <span class=\"kwrd\">void<\/span> actionPerformed(ActionEvent e) {<br \/>\nLab02aFrame.<span class=\"kwrd\">this<\/span>.windowClosed();<br \/>\n}<br \/>\n}<br \/>\n); <br \/>\nmenuFile.add(menuFileExit);<br \/>\nmenuBar.add(menuFile);<br \/>\n<br \/>\nsetTitle(<span class=\"str\">&quot;Lab02a&quot;<\/span>);<br \/>\nsetJMenuBar(menuBar);<br \/>\nsetSize(<span class=\"kwrd\">new<\/span> Dimension(400, 400));<br \/>\n<br \/>\nJPanel panel = <span class=\"kwrd\">new<\/span> JPanel();<br \/>\npanel.setLayout(<span class=\"kwrd\">new<\/span> BoxLayout(panel,BoxLayout.Y_AXIS));<br \/>\n<br \/>\n<span class=\"rem\">\/\/ test cases<\/span><br \/>\nRectangle test = <span class=\"kwrd\">new<\/span> Rectangle();<br \/>\n<br \/>\nJLabel label1 = <span class=\"kwrd\">new<\/span> JLabel();<br \/>\ntest.setLengthWidth(2,6);<br \/>\ntest.calculatePerimeter( );<br \/>\nlabel1.setText(test.print());<br \/>\npanel.add(label1);<\/p>\n<p>        JLabel label2 = <span class=\"kwrd\">new<\/span> JLabel();<br \/>\ntest.setLengthWidth(12,5);<br \/>\ntest.calculatePerimeter( );<br \/>\nlabel2.setText(test.print());<br \/>\npanel.add(label2);<br \/>\n<br \/>\n<span class=\"rem\">\/\/add more test cases<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"kwrd\">this<\/span>.add(panel);<br \/>\n<span class=\"rem\">\/\/ Add window listener.<\/span><br \/>\n<span class=\"kwrd\">this<\/span>.addWindowListener<br \/>\n(<br \/>\n<span class=\"kwrd\">new<\/span> WindowAdapter() {<br \/>\n<span class=\"kwrd\">public<\/span> <span class=\"kwrd\">void<\/span> windowClosing(WindowEvent e) {<br \/>\nLab02aFrame.<span class=\"kwrd\">this<\/span>.windowClosed();<br \/>\n}<br \/>\n}<br \/>\n);  <br \/>\n}<br \/>\n<br \/>\n<br \/>\n<span class=\"rem\">\/**<\/span><br \/>\n<span class=\"rem\">     * Shutdown procedure when run as an application.<\/span><br \/>\n<span class=\"rem\">     *\/<\/span><br \/>\n<span class=\"kwrd\">protected<\/span> <span class=\"kwrd\">void<\/span> windowClosed() {<br \/>\n<br \/>\n<span class=\"rem\">\/\/ TODO: Check if it is safe to close the application<\/span><br \/>\n<br \/>\n<span class=\"rem\">\/\/ Exit application.<\/span><br \/>\nSystem.exit(0);<br \/>\n}<br \/>\n}<\/pre>\n<\/p>\n<p><style type=\"text\/css\">\n.csharpcode, .csharpcode pre\n{\nfont-size: small;\ncolor: black;\nfont-family: consolas, \"Courier New\", courier, monospace;\nbackground-color: #ffffff;\n\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt\n{\nbackground-color: #f4f4f4;\nwidth: 100%;\nmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }<\/style>\n<\/p>\n<p>The students need to add their test cases between the comments, and I\u2019ll have to teach them to make a new label each time they need a new test case.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the things that drives me absolutely nuts about the Java materials I am using is that the majority of the programs are console programs. Sorry that really sucks when my regular children get to do real live Windows programs. So I have decided I am going to rewrite the labs so that they [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-670","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/posts\/670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/comments?post=670"}],"version-history":[{"count":0,"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/posts\/670\/revisions"}],"wp:attachment":[{"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/media?parent=670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/categories?post=670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kweaver.org\/cs\/wp-json\/wp\/v2\/tags?post=670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}