<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-12312442</id><updated>2007-05-21T16:53:28.858+03:30</updated><title type='text'>Programming</title><link rel='alternate' type='text/html' href='http://www.sarbanha.com/programming/index.php'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12312442/posts/default'></link><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.sarbanha.com/programming/atom.xml'></link><author><name>Mohammad Ali</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12312442.post-112158857725051913</id><published>2005-07-17T12:15:00.000+04:30</published><updated>2005-07-18T19:06:50.726+04:30</updated><title type='text'>JAVA: Using JPanel as Application Main Panel</title><content type='html'>Most of the programmers like to have the most beautiful menu bars and components in their applications, but in Java programming language, because of limited access to system level resources; it is a little bit difficult.&lt;/br&gt;&lt;br /&gt;Today I am going to explain how to make an attractive application frame, what I am going to say here is just the basics and a simple application that you can download and run it as a NetBeas Project.&lt;/br&gt;&lt;br /&gt;Since I usually use NetBeans IDE, this entire document is based on that IDE, so if you want to match this information with your programming environment you might check documents of your product.&lt;/br&gt;&lt;br /&gt;Normally when you are going to build a menu driven application in java, you make a Frame then start adding new components, this shows the normal borde for your application, but if you need more your should use JPanel instead of JFrame, working with JPanel need more manual codes but the result will be attractive.&lt;/br&gt;&lt;br /&gt;To make your application create a JPanel form, NetBeans does not add main to your JPanel frame so you should add it like this:&lt;/br&gt;&lt;br /&gt;&lt;pre style="font-family:'Courier New', Courier, mono;font-size:12px; margin-left: 20px; background-color:#FFFFCC; color:#000066; margin-right:20px;"&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;   createAndShowGUI();&lt;br /&gt; };&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;or you can do it in this way:&lt;/br&gt;&lt;br /&gt;&lt;pre style="font-family:'Courier New', Courier, mono;font-size:12px; margin-left: 20px; background-color:#FFFFCC; color:#000066; margin-right:20px;"&gt;&lt;br /&gt; public static void main(String[] args){&lt;br /&gt;  javax.swing.SwingUtilities.invokeLater( new Runnable(){&lt;br /&gt;   public void run(){&lt;br /&gt;    createAndShowGUI();&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; };&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;also you need a method called createAndShowGUI(), the name is not important you can choose any name that you want but be sure that you use the same method name in main() method.&lt;br&gt;&lt;br /&gt;The main role of createAndShowGUI() is to instanciate the application class and a JFrame and add the application class to that instance of JFrame. This could be something like this:&lt;/br&gt;&lt;br /&gt;&lt;pre style="font-family:'Courier New', Courier, mono;font-size:12px; margin-left: 20px; background-color:#FFFFCC; color:#000066; margin-right:20px;"&gt;&lt;br /&gt; private static void createAndShowGUI(){&lt;br /&gt;  panelAppTest myPanel = new panelAppTest();&lt;br /&gt;  JFrame.setDefaultLookAndFeelDecorated(true);&lt;br /&gt;  JFrame appFrame = new JFrame("My Test Application");&lt;br /&gt;  appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;&lt;br /&gt;  // REMEMBER THIS LOCATION&lt;br /&gt;&lt;br /&gt;  myPanel.setOpaque(true);&lt;br /&gt;  appFrame.setContentPane(myPanel);&lt;br /&gt;&lt;br /&gt;  appFrame.pack();&lt;br /&gt;  appFrame.setVisible(true);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now you need to add a menu bar and few menus and menu items, you can do this manually or do it through the IDE, don't make your life difficult, you can easily add menu bar using IDE, but in a tricky way.&lt;/br&gt;&lt;br /&gt;You just need to add menu bar and its children to a section called "Other Components" which you can find it under Form tree.&lt;/br&gt;The advantage of using IDE to make menu bar is that the IDE takes care of all event handling and the layout.&lt;/br&gt;&lt;br /&gt;For menus to be appeared in their place we need two other panels, in this example I use a JPanel and a JDesktopPane, be sure that you set the layout of the main JPanel to borderLayout, then after adding JPanel you need to set its layout to borderLayout as well; Then you can add JDesktopPane to the main JPanel.&lt;br&gt;&lt;br /&gt;For the correct layout you should set the direction of inner JPanel to “north” and for JDesktopPane it must be “center”, otherwise you will never see either the menu bar or the JDesktopPane.&lt;/br&gt;&lt;br /&gt;What you have now is just the layout, to add menu bar to the application you should get back to createAndShowGUI() method, find the line marked "// REMEMBER THIS LOCATION"; you should add the menu bar to the second JPanel that you have already made under the main JPanel.&lt;/br&gt;&lt;br /&gt;Okay, you have all the things ready, run your program and see the result and compare it with original Application Frame that NetBeans provide to you.&lt;/br&gt;&lt;br /&gt;&lt;pre style="font-family:'Courier New', Courier, mono;font-size:12px; margin-left: 20px; background-color:#FFFFCC; color:#000066; margin-right:20px;"&gt;&lt;br /&gt;  1 /*&lt;br /&gt;  2  * panelAppTest.java&lt;br /&gt;  3  *&lt;br /&gt;  4  * Created on July 17, 2005, 9:56 AM&lt;br /&gt;  5  */&lt;br /&gt;  6 &lt;br /&gt;  7 package panelAppTest;&lt;br /&gt;  8 &lt;br /&gt;  9 import javax.swing.*;&lt;br /&gt; 10 &lt;br /&gt; 11 /**&lt;br /&gt; 12  *&lt;br /&gt; 13  * @author  Mohammad Ali&lt;br /&gt; 14  */&lt;br /&gt; 15 public class panelAppTest extends javax.swing.JPanel {&lt;br /&gt; 16     &lt;br /&gt; 17     /** Creates new form panelAppTest */&lt;br /&gt; 18     public panelAppTest() {&lt;br /&gt; 19         initComponents();&lt;br /&gt; 20     }&lt;br /&gt; 21 &lt;br /&gt; 22 public static void main(String[] args){&lt;br /&gt; 23 &lt;br /&gt; 24         createAndShowGUI();&lt;br /&gt; 25 &lt;br /&gt; 26 };&lt;br /&gt; 27 private static void createAndShowGUI(){&lt;br /&gt; 28 &lt;br /&gt; 29         panelAppTest myPanel = new panelAppTest();&lt;br /&gt; 30 &lt;br /&gt; 31         JFrame.setDefaultLookAndFeelDecorated(true);&lt;br /&gt; 32         JFrame appFrame = new JFrame("My Test Application");&lt;br /&gt; 33         appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt; 34 &lt;br /&gt; 35         // REMEMBER THIS LOCATION&lt;br /&gt; 36         myPanel.jPanel1.add(myPanel.jMenuBar1);&lt;br /&gt; 37 &lt;br /&gt; 38         myPanel.setOpaque(true);&lt;br /&gt; 39         appFrame.setContentPane(myPanel);&lt;br /&gt; 40 &lt;br /&gt; 41         appFrame.pack();&lt;br /&gt; 42         appFrame.setVisible(true);&lt;br /&gt; 43 &lt;br /&gt; 44 }&lt;br /&gt; 45     /** This method is called from within the constructor to&lt;br /&gt; 46      * initialize the form.&lt;br /&gt; 47      * WARNING: Do NOT modify this code. The content of this method is&lt;br /&gt; 48      * always regenerated by the Form Editor.&lt;br /&gt; 49      */&lt;br /&gt; 50     private void initComponents() {&lt;br /&gt; 51         jMenuBar1 = new javax.swing.JMenuBar();&lt;br /&gt; 52         jMenu1 = new javax.swing.JMenu();&lt;br /&gt; 53         jMenuItem1 = new javax.swing.JMenuItem();&lt;br /&gt; 54         jMenuItem2 = new javax.swing.JMenuItem();&lt;br /&gt; 55         jMenuItem3 = new javax.swing.JMenuItem();&lt;br /&gt; 56         jSeparator1 = new javax.swing.JSeparator();&lt;br /&gt; 57         jMenuItem4 = new javax.swing.JMenuItem();&lt;br /&gt; 58         jMenu2 = new javax.swing.JMenu();&lt;br /&gt; 59         jMenuItem5 = new javax.swing.JMenuItem();&lt;br /&gt; 60         jMenu3 = new javax.swing.JMenu();&lt;br /&gt; 61         jMenuItem6 = new javax.swing.JMenuItem();&lt;br /&gt; 62         jPanel1 = new javax.swing.JPanel();&lt;br /&gt; 63         jDesktopPane1 = new javax.swing.JDesktopPane();&lt;br /&gt; 64 &lt;br /&gt; 65         jMenu1.setText("File");&lt;br /&gt; 66         jMenuItem1.setText("Open");&lt;br /&gt; 67         jMenu1.add(jMenuItem1);&lt;br /&gt; 68 &lt;br /&gt; 69         jMenuItem2.setText("Save");&lt;br /&gt; 70         jMenu1.add(jMenuItem2);&lt;br /&gt; 71 &lt;br /&gt; 72         jMenuItem3.setText("Save As ...");&lt;br /&gt; 73         jMenu1.add(jMenuItem3);&lt;br /&gt; 74 &lt;br /&gt; 75         jMenu1.add(jSeparator1);&lt;br /&gt; 76 &lt;br /&gt; 77         jMenuItem4.setText("Exit");&lt;br /&gt; 78         jMenuItem4.addActionListener(new java.awt.event.ActionListener() {&lt;br /&gt; 79             public void actionPerformed(java.awt.event.ActionEvent evt) {&lt;br /&gt; 80                 jMenuItem4ActionPerformed(evt);&lt;br /&gt; 81             }&lt;br /&gt; 82         });&lt;br /&gt; 83 &lt;br /&gt; 84         jMenu1.add(jMenuItem4);&lt;br /&gt; 85 &lt;br /&gt; 86         jMenuBar1.add(jMenu1);&lt;br /&gt; 87 &lt;br /&gt; 88         jMenu2.setText("Settings");&lt;br /&gt; 89         jMenuItem5.setText("Database");&lt;br /&gt; 90         jMenu2.add(jMenuItem5);&lt;br /&gt; 91 &lt;br /&gt; 92         jMenuBar1.add(jMenu2);&lt;br /&gt; 93 &lt;br /&gt; 94         jMenu3.setText("Help");&lt;br /&gt; 95         jMenuItem6.setText("About");&lt;br /&gt; 96         jMenu3.add(jMenuItem6);&lt;br /&gt; 97 &lt;br /&gt; 98         jMenuBar1.add(jMenu3);&lt;br /&gt; 99 &lt;br /&gt;100         setLayout(new java.awt.BorderLayout());&lt;br /&gt;101 &lt;br /&gt;102         jPanel1.setLayout(new java.awt.BorderLayout());&lt;br /&gt;103 &lt;br /&gt;104         add(jPanel1, java.awt.BorderLayout.NORTH);&lt;br /&gt;105 &lt;br /&gt;106         jDesktopPane1.setBackground(new java.awt.Color(51, 51, 51));&lt;br /&gt;107         jDesktopPane1.setPreferredSize(new java.awt.Dimension(400, 500));&lt;br /&gt;108         add(jDesktopPane1, java.awt.BorderLayout.SOUTH);&lt;br /&gt;109 &lt;br /&gt;110     }&lt;br /&gt;111 &lt;br /&gt;112     private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {&lt;br /&gt;113         // TODO add your handling code here:&lt;br /&gt;114         System.exit(0);&lt;br /&gt;115     }&lt;br /&gt;116     &lt;br /&gt;117     &lt;br /&gt;118     // Variables declaration - do not modify&lt;br /&gt;119     private javax.swing.JDesktopPane jDesktopPane1;&lt;br /&gt;120     private javax.swing.JMenu jMenu1;&lt;br /&gt;121     private javax.swing.JMenu jMenu2;&lt;br /&gt;122     private javax.swing.JMenu jMenu3;&lt;br /&gt;123     private javax.swing.JMenuBar jMenuBar1;&lt;br /&gt;124     private javax.swing.JMenuItem jMenuItem1;&lt;br /&gt;125     private javax.swing.JMenuItem jMenuItem2;&lt;br /&gt;126     private javax.swing.JMenuItem jMenuItem3;&lt;br /&gt;127     private javax.swing.JMenuItem jMenuItem4;&lt;br /&gt;128     private javax.swing.JMenuItem jMenuItem5;&lt;br /&gt;129     private javax.swing.JMenuItem jMenuItem6;&lt;br /&gt;130     private javax.swing.JPanel jPanel1;&lt;br /&gt;131     private javax.swing.JSeparator jSeparator1;&lt;br /&gt;132     // End of variables declaration&lt;br /&gt;133     &lt;br /&gt;134 }&lt;br /&gt;135 &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://www.geocities.com/sarbanha/zips/panelAppTest.zip"&gt;Download panelAppTest NetBeans Project&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://www.sarbanha.com/programming/2005/07/java-using-jpanel-as-application-main.php'></link><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12312442/posts/default/112158857725051913'></link><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12312442/posts/default/112158857725051913'></link><author><name>Mohammad Ali</name></author></entry></feed>